Виталий Котовщиков написал: именно к вашему этому утверждению было моёНет нельзя удалить после.
Может я чего то не догоняю, но ошибка у вас была из за подписки на событие "Б_ЗарегистрироватьИзмененияПередЗаписьюРегистраСведенийДляО бменаССайтами". Она относится к нашему модулю. И если ее удалить, то и ругаться не будет. Наш модуль не редактирует типовые объекты. По сути, только подписки могут ломать конфигурацию.
Вы просто ни разу не проверив процесс своими руками ,как оно в реальности происходит, утверждаете ошибочное решение по установке ,что можно сохранить старый обмен и использовать его данные для импорта идентификаторов имея обе версии обмена в новой конфе 11.5.
я же написал все выше - ее (подписку) ок, удалили. обновление на 11.5 ТОЛЬКО ТОГДА проходит благополучно. закрываем конфигуратор, запускаем тонкий с только что обновленной на 11.5 конфой и получаем вместо запуска сообщения об ошибке:
Ошибка при вызове метода контекста (Записать) {ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(507)}:ИначеЕсли ТипОбъекта = Тип("РегистрНакопленияНаборЗаписей.СвободныеОстатки")" ...
идем опять в конфиг, удаляем Б_ОбменССайтомСервер.Модуль и все что на него имеет ссылки, обновляем конфу возвращаемся в попытку открыть тонкий, получаем СЛЕДУЮЩУЮ еще более обширную палитру ОШИБОК
так что НЕТ, НЕЛЬЗЯ оставить старый модуль обмена + обновить конфу на 11.5, установить НОВЫЙ модуль для 11.5 и ИМПОРТНУТЬ идентификаторы из старого. НЕ РАБОТАЕТ ЭТО ТАК. ТОЛЬКО удаление старого модуля обмена КРОМЕ реквизита Идентификаторы. Ну не работает это.
написал: 1. Инструкции нет. Главное - перенести идентфикаторы. В новой версии есть соотв. команда, которая переносит ид из старого модуля в новый(старый модуль удалять можно уже после). Саму настройку нужно будет создавать ручками.
именно к вашему этому утверждению было моё Нет нельзя удалить после.
старый модуль нельзя удалить ПОСЛЕ обновления на 11.5, установки нового модуля и импорта ИМ из СТАРОГО идентификаторов объектов потому что смотрите сообщения об ошибках выше. Обновление конфы не проходит, если не удалить старый модуль, а удалив его теряются идентификаторы. Единственный путь - удалить старый модуль ДО обновления конфы, КРОМЕ реквизита идентификаторов. А вы до сих пор утверждаете обратное зачем-то.
Как можно вывести в версии модуля для 11.4 идентификаторы объектов в список чтоб хоть так их сохранить и потом попытаться импортировать обратно? Почему по команде меню "Идентификаторы объектов" выбираем например Номенклатура - в колонке "Код битрикс" - всё тотально пусто? Хотя ВСЯ номенклатура безусловно связана и ежедневно прекрасно обменивается с сайтом? Где коды?
для контрагентов, заказов коды выводятся например
В модуле для 11.5 такая же история для вывода кодов? Как проверить что объекты получили импорт кодов и при обмене не будет тотального задвоения на сайте/в 1С номенклатуры, заказов и прочего?
Алексей Викторович Гаращук написал: 1) Где можно посмотреть алгоритм перехода с 7 версии модуля на 8 версию (на расширениях) ? (Возможно есть инструкция со всеми тонкостями и "подводными камнями") - Этот вопрос очень важен так как всем в скором времени нужно будет переходить с одной версии модуля на другую.
1. Инструкции нет. Главное - перенести идентфикаторы. В новой версии есть соотв. команда, которая переносит ид из старого модуля в новый(старый модуль удалять можно уже после). Саму настройку нужно будет создавать ручками.
2.Нужно будет исправить(обновить) заимствованные объекты конфигурации в расширении. Сам код модуля идентичный.
(старый модуль удалять можно уже после)
НЕТ НЕЛЬЗЯ удалить ПОСЛЕ
вот попытались обновить 11.4 на 11.5 не удаляя модуль обмена чтоб не потерять идентификаторы.
при обновлении ошибка: На удаляемый объект РегистрНакопления.СвободныеОстатки есть ссылки в объектах основной конфигурации: ПодпискаНаСобытие.Б_ЗарегистрироватьИзмененияПередЗаписьюРегистраСведенийДляОбменаССайтами.Источник"
ладно, удаляем только объект Б_ЗарегистрироватьИзмененияПередЗаписьюРегистраСведенийДляОбменаССайтами
далее все обновляется, попытка открыть обновленную конфу 11.5:
[ScriptRuntimeError] по причине: Ошибка при выполнении обработчика - 'ПриЗаписи' по причине: Тип не определен (РегистрНакопленияНаборЗаписей.СвободныеОстатки) [ScriptRuntimeError, ScriptUseError]
возвращаемся в конфигуратор, удаляем Б_ОбменССайтомСервер и все что на него ссылается и не дает его удалить
далее вообще ничего не работает ,т.к. колво ошибок только ширится.
почему нет до сих пор ВНЯТНОЙ инструкции как перейти на модуль для 11.5 не потеряв идентификаторы?
правильно ли я понимаю, что правильный и, видимо, единственный путь обновления без потери связи с объектами в Битрикс это 1. удалить все согласно инструкции по удалению старого модуля обмена КРОМЕ Общие реквизиты - Б_Идентификатор 2.обновить конфу на 11.5 3. установить новый модуль обмена для 11.5 4. выполнить из него в меню "Загрузка идентификаторов старой версии модуля" 5. можно удалить реквизит Б_Идентификатор
Совершенно дикий косяк - модуль обмена изменяет проведенную (отгруженную) реализацию. Настройки таковы, что после проведения в 1С отгрузки, она улетает на сайт, а в обратном обмене модуль получает дату с сайта и лепит ее в проведенную реализацию, что в корне не правильно - проведенные документы не должны изменяться, особенно реализация.
Выбрать в настройках реквизитов "дата1С" не вариант - это всегда дата сеанса, должна быть проверка для этого значения - если документ в 1С проведен - то дата остается какая у него установлена в момент проведения и больше не трогается.
ТП ессно при обращении почесали репу ,поцокали языками, всё проверили, сказали - дааа, проблееемаа. создали заявку в разработку ну и всё на этом - "как только заявка реализуется - вас оповестят" за 4 года я ни разу не получал оповещений по таким заявкам, а их было уже штук 7
Виталий Котовщиков написал: т.е. значение должно заполнить"новинка" = true "распродажа" = false"рекомендуем" = true Вот такое можно передавать обменом?
не понимаю что вы хотите сделать. У вас 2 true
в битрикс есть свойство у товара. тип - список. множественное - да. т.е. у свойства есть список значений и можно одновременно выбрать несколько.
вопрос про то, как можно было бы через свой алгоритм передавать этот список значений свойства при обмене, установив для части значений - да, активно, для части - нет, не активно. у свойства есть внешний код. у его значений есть XML_ID.
видимо это можно было бы передать как Результат = массив
массив вида значение1 true значение2 false значение3 true
Вот вопрос - как это можно и можно ли вообще организовать?
нене. там по ссылке надо руками задавать в 1С значение свойству. А на 50тыс номенклатуры как это делать динамически, да еще по 2 раза в день, как минимум? Да и в 1С мне эти данные ни к чему. Мне на сайте просто включать товары в категории для показа. Речь именно про обмен битрикс и чтобы получить в алгоритме для конкретного свойства [Результат] = множественный список. т.к. в алгоритме я могу получить доступ к любым данным и по ним динамически сформировать включение строк этого списка. например
в алгоритме сначала создается массив строк свойства и всем присваивается значение = false потом проверяется на соответствие Если артикул содержит спец символ тогда строка "уценка" значение =true Если дата создания номенклатуры < недели от текущей тогда строка "новинка" =true
это чисто для примера, чтоб понять о чем речь.
вопрос только в том как получить (условия-то я пропишу) [Результат] = множественный список.
Пытаюсь достучаться к полю комментарий в документеXML через свой алгоритм [Результат] = [ДокументXML].Комментарий;
Но в итоге в комментарий как-то записывается наименование контрагента а не комментарий менеджера, который там есть <Номер1С>5</Номер1С> <Контрагенты>...</Контрагенты> <Время>20:31:57</Время> <Комментарий>манагер</Комментарий>
для своего алгоритма (заполнение значения в создаваемом документе на основании документа XML) можно обратиться вот так ПолучитьЗначениеРеквизитаДокумента([ДокументXML].ЗначенияРеквизитов, "Статус заказа");
Для создания документа - обращение в файле идет видимо только в документ с шапкой <Ид>1</Ид> <ХозОперация>Заказ товара</ХозОперация>
А как при создании документа заказа обратиться к реквизитам/данным из документа Отгрузка? <Документ> <Ид>2</Ид> <Номер>2</Номер> <Дата>2021-03-25</Дата> <ХозОперация>Отпуск товара</ХозОперация>
Я так понимаю в части [ДокументXML] нужно как-то указать какой именно документ. Но позволяет ли Модуль обмена обращаться к другой части файла, кроме как своего раздела?
А теперь супер игра! Как через алгоритм заполнить цепочку "Заполнение обеспечения и отгрузки", варианты заполнения которой появляются в заказе по кнопке обеспечение -> заполнить обеспечение под цифрами 1-2-3?
поставил в каждый из полей варианты: для статус заказа: [Результат] = Перечисления.СтатусыЗаказовКлиентов.НеСогласован;
для варианта обеспечения [Результат] = Перечисления.ВариантыОбеспечения.НеТребуется;
не работает - пустое поле, т.е. то же самое ,что и [Результат] = "НеТребуется";
Фиксированные значения же работают, значит туда можно как-то заносить свои результаты? Т.е. фиксированное значение же что-то подставляет, можно посмотреть что именно туда попадает в этом случае? Ссылка на объект или что-то еще.
Сопоставлено: статусы заказов (Сайт)<->Состояния заказов (1С) при таком варианте Статус Заказа (1С) никак не заполнить и не изменить путем обмена - он пустой, а однажды встав "к выполнению" уже никак его на "на Согласовании" не вернуть автоматом - заказ упорно лезет во все обеспечения товарами, хотя на сайте уже стоит " в ожидании решения клиента" (если клиент после подтверждения заказа решил передумать.
Задача - в Настройке соответствий документов для документа заказ есть поле статус. Когда ему задаешь фиксированное значение -все работает отлично, но это означает, что при обмене он опять будет принудительно ставиться в определенный статус. Как только туда вбиваешь свой алгоритм (с тем же значением) - в заказе статус стирается и остается пустым. проверил в конфигураторе - статус "НеСогласован" (в значении перечисления данных у статусов заказа клиентов ) - есть. Но свой алгоритм вида
[Результат] = "НеСогласован";
не работает никак. В чем может быть проблема?
Еще более насущная проблема с заполнением "состояние обеспечения" - если ставить в настройках = "фиксированное значение", то все ок. как только пишешь свой алгоритм [Результат] = "Обеспечивать"; то поле остается незаполненным. А фиксированное значение по-сути рушит все автоматизации, т.к. при изменении статуса на сайте обеспечение, уже дошедшее в 1С до стадии "отгрузить" сбрасывается на "к обсепечению" (например) и никакие "проводить отгрузки, если они отгружены на сайте" не работают, т.к. в этот момент перезаписывается состоние обеспечения на то ,при котором отгрузку провести нельзя.
Как правильно будет выглядеть алгоритм для заполнения обеспечения типа [Результат] = "Обеспечивать"; ?
увы, но {(1,22)}: Ожидается идентификатор Результат = Документ.<<?>>[статус]."НеСогласован"; {(1,23)}: Ожидается символ ';' Результат = Документ.[<<?>>статус]."НеСогласован"; {(1,29)}: Неопознанный оператор Результат = Документ.[статус<<?>>]."НеСогласован";
Сопоставлено: статусы заказов (Сайт)<->Состояния заказов (1С) при таком варианте Статус Заказа (1С) никак не заполнить и не изменить путем обмена - он пустой, а однажды встав "к выполнению" уже никак его на "на Согласовании" не вернуть автоматом - заказ упорно лезет во все обеспечения товарами, хотя на сайте уже стоит " в ожидании решения клиента" (если клиент после подтверждения заказа решил передумать.
Итак, задача - в Настройке соответствий документов для документа заказ есть поле статус. Когда ему задаешь фиксированное значение -все работает отлично. Как только туда вбиваешь свой алгоритм (с тем же значением) - в заказе статус стирается и остается пустым. проверил в конфигураторе - статус "НеСогласован" (в значении перечисления данных у статусов заказа клиентов ) - есть. Но свой алгоритм вида
Александр Денисюк, Странно, но с уже созданным заказом ,все сработало - даты везде меняются при смене статусов. А вот при синхронизации и создании новых заказов все встает колом ,т.к. ошибку возвращает, что Преобразование значения к типу Дата не может быть выполнено [Результат] = Дата(ПолучитьЗначениеРеквизитаДокумента([ДокументXML].ЗначенияРеквизитов, "Отгрузка"));
пробовал через переменную, типа k = ПолучитьЗначениеРеквизитаДокумента([ДокументXML].ЗначенияРеквизитов, "Отгрузка")); [Результат] = Дата(k);