При создании новой карточки номенклатуры возникает "переполнение стека встроенного языка на сервере"
Добрый вечер, всем!
Ругается на эти процедуры.
Ошибка появилась только сегодня. Вчера ошибок не было.
17 раз вызывается запись, хотя в запросе результат ТЗ всего 7 позиций.
Что не так, подскажите мудрым советом.
Спасибо!
Ругается на эти процедуры.
Ошибка появилась только сегодня. Вчера ошибок не было.
17 раз вызывается запись, хотя в запросе результат ТЗ всего 7 позиций.
Что не так, подскажите мудрым советом.
Спасибо!
Функция НоменклатураГНК(СТ_ЗапретитьВыгрузкуНаWebSite_ru = Ложь, ВидНоменклатуры = Неопределено)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("БИТ_СТ_ГруппаНомеклатурыВКаталоге", Ссылка);
Запрос.УстановитьПараметр("СТ_ЗапретитьВыгрузкуНаWebSite_ru", СТ_ЗапретитьВыгрузкуНаWebSite_ru);
Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
Запрос.Текст =
"ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
|ГДЕ
| СпрНоменклатура.БИТ_СТ_ГруппаНомеклатурыВКаталоге = &БИТ_СТ_ГруппаНомеклатурыВКаталоге
| И НЕ СпрНоменклатура.ЭтоГруппа
| И СпрНоменклатура.СТ_ЗапретитьВыгрузкуНаWebSite_ru = &СТ_ЗапретитьВыгрузкуНаWebSite_ru
| И СпрНоменклатура.ВидНоменклатуры В(&ВидНоменклатуры)
| И СпрНоменклатура.ПометкаУдаления = ЛОЖЬ";
Таблица = Запрос.Выполнить().Выгрузить();
Массив = Таблица.ВыгрузитьКолонку("Номенклатура");
Возврат Массив;
КонецФункции
ПоказатьПроцедура ПерезаписатьНоменклатуруЗапретитьВыгрузкуНаWebSite();
ВидыНК = Новый Массив;
ВидыНК.Добавить(Справочники.ВидыНоменклатуры.Продукция);
ВидыНК.Добавить(Справочники.ВидыНоменклатуры.Товар);
МассивНК_ = НоменклатураГНК(Истина, ВидыНК);
Для Каждого ЭлементНК ИЗ МассивНК_ Цикл
Попытка
ТекущийОбъект = ЭлементНК.ПолучитьОбъект();
ТекущийОбъект.Записать();
Исключение
ОбщегоНазначения.СообщитьОбОшибке("Не удалось перезаписать номенклатуру: " + ТекущийОбъект.Наименование + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
ПоказатьНайденные решения
(10)
Смотрите. У нас есть 2 справочника, у которых некоторые реквизиты не равны. Например ВыгружатьСайт_ru <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
Если мы хотим привести их в соответствие, то надо либо перед записью справочника номенклатуры без условий привести в равенство, либо в код
Добавить
и тогда в модуле номенклатуры перед записью дописать
При этом у нас установятся указанные реквизиты справочника номенклатуры в соответствие с реквизитами БИТ-СТ и цикл разорвется.
Смотрите. У нас есть 2 справочника, у которых некоторые реквизиты не равны. Например ВыгружатьСайт_ru <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
Если мы хотим привести их в соответствие, то надо либо перед записью справочника номенклатуры без условий привести в равенство, либо в код
ТекущийОбъект = ЭлементНК.ПолучитьОбъект()
Добавить
ТекущийОбъект.ДополнительныеСвойства.Вставить("ОбновитьЧегототам", ИСТИНА)
и тогда в модуле номенклатуры перед записью дописать
Если ДополнительыеСвойства.Свойство("ОбновитьЧеготота") ТОгда
БИТ_СТ_ВыгрузитьНаWebSite_ru = БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
БИТ_СТ_ДляВыгрузкиНаWebSite_ru = БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
КонецЕсли
При этом у нас установятся указанные реквизиты справочника номенклатуры в соответствие с реквизитами БИТ-СТ и цикл разорвется.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) все верно из "БИТ_СТ_ГруппыНоменклатурыВКаталоге".
Что-то не так именно в самой процедуре ПерезаписатьНоменклатуруЗапретитьВыгрузкуНаWebSite();
Меня смущает запись в цикле
Если Не ДополнительныеСвойства.Свойство("СТ_НеОбновлятьСтатус") Тогда
МассивНоменклатуры = НоменклатураГНК();
Справочники.СТ_СтатусыНоменклатуры.ОбновитьСтатусыНоменклатуры(МассивНоменклатуры);
ПерезаписатьНоменклатуруЗапретитьВыгрузкуНаWebSite();
КонецЕсли;
Что-то не так именно в самой процедуре ПерезаписатьНоменклатуруЗапретитьВыгрузкуНаWebSite();
Меня смущает запись в цикле
(7)
ИЗ МО справ-ка Номенклатуры идет вызов
Простая запись делается, чтобы обновить реквизиты формы справ-ка НК.
Изменения данных подвязано с регистром сведений "Статусы НК" и спра-ком "Статусы номенклатуры".
ИЗ МО справ-ка Номенклатуры идет вызов
Если ЗначениеЗаполнено(БИТ_СТ_ГруппаНомеклатурыВКаталоге) Тогда
ВыгружатьСайт_ru = БИТ_СТ_ВыгрузитьНаWebSite_ru и БИТ_СТ_ДляВыгрузкиНаWebSite_ru;
ВыгружатьСайт_en = БИТ_СТ_ВыгрузитьНаWebSite_en и БИТ_СТ_ДляВыгрузкиНаWebSite_en;
ВыгружатьСайт_de = БИТ_СТ_ВыгрузитьНаWebSite_de и БИТ_СТ_ДляВыгрузкиНаWebSite_de;
ВыгружатьСайт_ua = БИТ_СТ_ВыгрузитьНаWebSite_ua и БИТ_СТ_ДляВыгрузкиНаWebSite_ua;
Если (ВыгружатьСайт_en <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_en)
или (ВыгружатьСайт_ru <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru)
или (ВыгружатьСайт_de <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_de)
или (ВыгружатьСайт_ua <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ua)
Тогда
БИТ_СТ_ГруппаНомеклатурыВКаталогеОбъект = БИТ_СТ_ГруппаНомеклатурыВКаталоге.ПолучитьОбъект();
БИТ_СТ_ГруппаНомеклатурыВКаталогеОбъект.Записать();
КонецЕсли;
КонецЕсли;
ПоказатьПростая запись делается, чтобы обновить реквизиты формы справ-ка НК.
Изменения данных подвязано с регистром сведений "Статусы НК" и спра-ком "Статусы номенклатуры".
(8) Всё равно дичь. Либо Вы не всё показываете:
1. Если надо перезаписать, то надо установить реквизиты. А в приведенном коде они не выставляются. Поэтому и идет зацикливание.
2. Для того, чтобы реквизиты справочника изменились, надо передать доп. параметры. А здесь я этого не вижу. Вот за счет того, что данные не изменяются и идет зацикливание.
1. Если надо перезаписать, то надо установить реквизиты. А в приведенном коде они не выставляются. Поэтому и идет зацикливание.
2. Для того, чтобы реквизиты справочника изменились, надо передать доп. параметры. А здесь я этого не вижу. Вот за счет того, что данные не изменяются и идет зацикливание.
(10)
Смотрите. У нас есть 2 справочника, у которых некоторые реквизиты не равны. Например ВыгружатьСайт_ru <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
Если мы хотим привести их в соответствие, то надо либо перед записью справочника номенклатуры без условий привести в равенство, либо в код
Добавить
и тогда в модуле номенклатуры перед записью дописать
При этом у нас установятся указанные реквизиты справочника номенклатуры в соответствие с реквизитами БИТ-СТ и цикл разорвется.
Смотрите. У нас есть 2 справочника, у которых некоторые реквизиты не равны. Например ВыгружатьСайт_ru <> БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
Если мы хотим привести их в соответствие, то надо либо перед записью справочника номенклатуры без условий привести в равенство, либо в код
ТекущийОбъект = ЭлементНК.ПолучитьОбъект()
Добавить
ТекущийОбъект.ДополнительныеСвойства.Вставить("ОбновитьЧегототам", ИСТИНА)
и тогда в модуле номенклатуры перед записью дописать
Если ДополнительыеСвойства.Свойство("ОбновитьЧеготота") ТОгда
БИТ_СТ_ВыгрузитьНаWebSite_ru = БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
БИТ_СТ_ДляВыгрузкиНаWebSite_ru = БИТ_СТ_ГруппаНомеклатурыВКаталоге.БИТ_СТ_ДляВыгрузкиНаWebSite_ru
КонецЕсли
При этом у нас установятся указанные реквизиты справочника номенклатуры в соответствие с реквизитами БИТ-СТ и цикл разорвется.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот