Здравствуйте, у меня возникла проблема при программном создании документа "Установка цен номенклатуры". Загружаю товар в базу с артикулом 111 с наименованием Стул 111, создаю для этого товара документ установка цен номенклатуры. Далее загружаю этот же товар, только уже с измененным наименованием на Стул 222 артикул при этом остается 111. И вижу картину, в документе установка цен номенклатуры товар отображается как Стул 111, если открыть карточку товара то вижу наименование Стул 222.
При записи новой номенклатуры в табличной части передаю ссылку на объект.
Кто сталкивался с таким глюком. Сразу скажу, что обновлять документ и его содержимое пробовал, не помогает. Закрывал открывал, не помогает. Помогает только если провалиться в товар по F4 и выбрать товар из списка.
Управление торговлей, редакция 11.1 (11.1.6.24)
1С:Предприятие 8.3 (8.3.4.496)
(1) ser-yoga, "создаю для этого товара документ установка цен номенклатуры"
Создаёте форму документа и показываете или сразу пишете в базу документ?
Если судить по приведенной ошибке, то создаётся форма, форма получает представление для номенклатуры, потом номенклатура поменялась, но форма об этом не знает. Должно помочь "ОбновитьОтображениеДанных"
Попробуйте перед началом поиска обнулять переменную "НайденнаяНоменклатура" и по анализируйте отладчиком что не так. А вообще сами ответили на свой вопрос в первом посте. У вас два товара с одинаковым артикулом а выначинаете поиск по артикулу соответственно он вам и возвращает СТУЛ1111 созданый первым.
(8) Consultant_1C, дело в том, что после того, как я нахожу номенклатуру я в ней перезаписываю данные. Отладчик показывает новые данные.
(9) mrstomak, документ пишу сразу в базу.
(10) zoytsa, При повторном открытии документа различие сохраняется.
(11) Consultant_1C, предвижу ошибку при таком поиске, допустим в базе есть товар с артикулом 111 с наименованием Стул111, я загружаю номенклатуру с артикулом 111 с наименованием Стул222, программа найдет товар с артикулом 111 и не найдет товар с наименованием Стул111 следовательно номенклатура найденная по артикулу не будет равна номенклатуре найденной по наименованию и программа вернет мне пустую ссылку, отсюда создастся новый объект номенклатуры с наименованием Стул111 с артикулом 111, но с таким артикулом товар в базе уже есть, отсюда ошибка.
(13) ser-yoga, Вы не правы. У Вас Стул111 артикул 111 и Стул222 артикул 111. соответственно первым делом вы ищите по артикулу находите но так как поиск вам даст первый удовлетворяющий поиску элемент то это может быть как стул111 там и стул222. Поэтому ниже вы должны произвести поиск по наименованию. И произвести сравнение. Поэтому будет следующее:
1. найдена будет позиция Сутл111 с арт. 1111
2. Мы ищем теперь элемент по наименованию "Стул222" и тут уже либо она нам возвращает Стул222 или пустую ссылку
3. Мы сравниваем результаты поиска 1 и результат поиска 2 (в первом у нас Стул111 арт 1111 а во втором пустая ссылка или же Стул222 арт. 1111)
4. Вовращаем если Струл222 еще не создан как элемент справочника то аернем путую ссылку иначе веренм правильную позицию Стул222 арт.1111
ну и если при сравнении результат поиска 1 = результату поиска 2 то вернем найденую номенклдатуру.
(17) Consultant_1C, Я же рассматриваю конкретный случай, когда у меня в базе уже есть товар с артикулом 111 с наименованием Стул111, но при этом я загружаю товар с артикулом 111 с наименованием Стул222. Я согласен с тем, что в других случаях такой поиск имеет место быть, но в данном случае он не работает.
"4. Вовращаем если Струл222 еще не создан как элемент справочника то аернем путую ссылку иначе веренм правильную позицию Стул222 арт.1111"
стул222 еще не создан, это очевидно, поэтому вернется пустая ссылка, и программа запишет новый товар с артикулом 111 и опять ошибка.
(17) Consultant_1C, P.S.: Пишите без ошибок, цените время других людей.
(18) zoytsa, два разных компа с разными базами. Но при этом версия конфигурации и платформы совпадают. Сейчас пробую загрузить на 3м компе на свежей базе.
в 11 не видел, но в 10.3 табличная часть в документе установки цен строилась очень хитро, сама ТЧ содержит строк = количество строк*Количество типов цен, а при выводе типы цен собираются в колонки. соответственно может вы неправильно заполняете ТЧ, обратите на это внимание на всякий случай
Скорее всего неправильно загружаю сам документ установка цен номенклатуры, сейчас попробовал загрузить в новую базу на другой платформе, даже не дает открыть документ, пишет "индекс находится за границами массива"
(26) ser-yoga,
1. а в справочнике Номенклатура присутствуют оба "Стул111/Арт111" и "Стул222/Арт111" я так и не понял
2. больше совет: не используйте НИКОГДА имена переменных с такими наименованиями как "Номенклатура", "Родитель" и т.д.
лучше типа ВыбНом, ВыбРод - оградите себя сразу же от некоторых непонятностей
3. сам недавно писал только "Установка...", но у меня было то, что номенклатура не попадала в ТЧ либо цен не было либо не делал движения
уже непонятно кто кому помогает))) попробуйте короче загрузить номенклатуру, отладчиком гляньте что находится в таблице "Товары" при создании формы, затем перевыберите номенклатуру, сохраните док и опять посмотрите что в "Товарах", вот разница и прояснит что делаете не так при загрузке. Код приведеный в (26) явно не полный, обработку качать не хочется, может будет настроение гляну...
(28) ser-yoga, да какие еще предложения? надо разбираться как там все устроено или поискать готовые разработки с примером программного создания установки цен.
(30) ser-yoga,
Еще раз уточните пожалуйста, в созданном документе Вы "лупой" (значок открытия объекта) - открываете номенклатуру в табличной части и у нее другое наименование (в форме элемента справочника) нежели в форме документа, верно?
В общем написал загрузку через ТЗ, изменил имя переменной с "Номенклатура" на "НомОбъект" все равно не помогает. Самое интересное это то, что если создать несколько документов с товаром Стул222 отображаться во всех будет Стул111, а потом если провалиться в выбор товара через три точки, во всех документах изменится представление на правильное, это меня окончательно ставит в тупик.
(40) Tomy82, В справочнике присутствует только один из этих товаров, одновременно они существовать не могут, артикул уникальное поле. В какой момент виснет обработка?
(41) ser-yoga,
на Вин2008 вываливается ошибка при "заполнить номера колонок автоматически"
{Форма.Форма.Форма(279)}: Ошибка при вызове конструктора (COMObject)
Эксель = Новый COMObject("Excel.Application");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
значение имеет правильное наименование, после завершения происходит какая-то магия и наименование изменяется на неправильное. Причем до слова КонецПроцедуры все отлично, после этого слова наименование становится неправильным.
Оказывается в документе Установка цен номенклатуры разработчики решили что будет слишком просто выводить табличную часть на форму и решили создать элемент формы ДеревоЦен, которое как раз отображает табличную часть.
(53) ser-yoga,
может быть
если это так может сначала сделать ТЗ по всей номенклатуре из Ёкселя, потом уже бежать по ней и заполнять другую ТЗ по номенклатуре и впихивать её всю сразу в ТЧ документа через Загрузить()?
у меня несколько предложений по обработке
1. кнопка "Закрыть"
2. кнопка "дЕлее")))
3. КолвоСтрок почему-то определяет как 65 тыщ строк
(55) Tomy82, с двумя ТЗ тоже не совсем понял, сейчас я записываю всю номенклатуру в ТЗ, а после через метод Загрузить() загружаю эту ТЗ в табличную часть. А вторую тз как заполнять, заполнять построчно из первой ТЗ?
(53) ser-yoga,
Все Функции - Справочники - Идентификаторы об'ектов метаданных - обновить данные справочника
и будет Вам щастие
тока что проверил на тестовой
"Комод Тест 1.2" в документе превратился в "Комод Тест 1.1" в документе
(67) Tomy82, ну конечно я знаю, что такой "все функции", но в справочнике "Идентификаторы объектов метаданных" я не вижу кнопки "обновить данные справочника", прошу прощения за невежество
(69) ser-yoga,
почему-то ссылка трансформируется в http://документооборот.net/faq/additional/kak_vklyuchit_punkt_vse_funkcii%C2%AD.html --- соответственно и не открывается;
(63) ser-yoga,
есть такой справочник "Идентификаторы об'ектов метаданных"
вызовите его через "Все Функции"
в нём есть кнопка - "обновить данные справочника"
это не Ф5 совсем
а че кстати вы вообще бросились документ создавать может проще было стандартное заполнение ТЧ из экселя подшаманить, или хотите автоматизировать максимально?
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОМАНД ФОРМЫ
&НаКлиенте
Процедура ОбновитьДанныеСправочника(Команда)
ЕстьИзменения = Ложь;
ЕстьУдаленные = Ложь;
ОбновитьДанныеСправочникаНаСервере(ЕстьИзменения, ЕстьУдаленные);
Если ЕстьИзменения Тогда
Текст = НСтр("ru = 'Обновление выполнено успешно.'");
Иначе
Текст = НСтр("ru = 'Обновление не требуется.'");
КонецЕсли;
Если ЕстьУдаленные Тогда
Текст = Текст
+ Символы.ПС
+ Символы.ПС
+ НСтр("ru = 'Найдены удаленные объекты метаданных
|(см. элементы, начинающиеся с символа ""?"").'");
КонецЕсли;
Предупреждение(Текст);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Процедура ОбновитьДанныеСправочникаНаСервере(ЕстьИзменения, ЕстьУдаленные)
УстановитьПривилегированныйРежим(Истина);
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ЕстьИзменения, ЕстьУдаленные);
Элементы.Список.Обновить();
КонецПроцедуры
(77) Tomy82, Попробовал так сделать, не получилось, добавил кнопку на форму, нажимал, все равно не получается. Более того, создавал документ реализации товаров, там такая же история.
(78) ser-yoga,
Печально, а на кнопку процедуру не забыли повесить?
Модуль кнопки отрабатывает?
а если воспользоваться типовой кнопкой загрузки из Ёкселя в документе?
я бы перенёс полностью справочник из одной конфигурации в другую
(79) Tomy82, Еще хотел уточнить, а как нужно правильно заполнить файл Excel, чтобы из него данные загружались типовыми средствами в установку цен номенклатуры?
Кстати говоря, даже в типовых механизмах 1С используется переменная при создании номенклатуры "Номенклатура", я так понял эта переменная не является зарезервированной.
(89) Tomy82, Надо попробовать почистить кэш, может действительно из-за него, только я сильно в этом сомневаюсь, потому что на 3х разных компах тестил файловую базу. Хотя, чем черт не шутит, надо попробовать
как вариант почистите временные файлы у себя на компе. часто бывает что после обновления конфигурации, почему то открывается старая версия (может был дописан документ и что-то не обновилось).