Имя: Пароль:
1C
1C 7.7
v7: Один и тот же код не работает на некоторых компьютерах
,
0 Mafiozaa
 
03.03.21
02:30
Доброго времени суток, суть проблемы: есть написанный документ, у меня работает в тестовой базе все корректно все хорошо, обновляю боевую базу, тот для кого этот документ создавался, сегодня работает все хорошо, завтра заходит у него Поле Агрегатного объекта не обнаружено. Повторюсь
01.03.21 - У него работает все как должно
02.03.21 - Не работает как должно (при этом ничего не изменялось)
03.03.21 - Заного скидываю свой мдшник (рабочий) обновляю, при объеденении, изменения кода не было
Куда смотреть куда копать?)
1 Mafiozaa
 
03.03.21
02:34
Код для наглядности:

    Перем ИмяФайла, КаталогФайла;
    Перем НомерУПД;
    Перем ТЗКоды, ТЗШкоды;
    Перем ТекущаяПозиция;
    Перем ПризнакУчастника, ФорматДата;
    Перем Штрихкод;
    
    Процедура ПриОткрытии();    
    КонецПроцедуры
    
    
Функция ЗаполнениеПоДокументуОснованию()
    
    Если ДокОснование.Выбран()=0 Тогда
        Возврат "Документ - основание не выбран!";
    КонецЕсли;
    
    ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
    ДокОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента);
    
    // очищаем наш документ
    УдалитьСтроки();
    
    СпрМ = СоздатьОбъект("Справочник.НоменклатураМаркировка");
    СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
    
    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл
        Для инд = 1 По ТаблицаДокумента.Количество Цикл
            Если СпрМ.НайтиПоКоду(ТаблицаДокумента.Номенклатура.Код) = 1 Тогда
                НоваяСтрока();
                Номенклатура = ТаблицаДокумента.Номенклатура;
                КодТовара = СокрЛП(ТаблицаДокумента.Номенклатура.БазоваяЕдиница.ШтрихКод);
                Цена = ТаблицаДокумента.Цена;
                СтавкаНДС = ТаблицаДокумента.СтавкаНДС;
                СуммаНДС = Цена * (0.2);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла; // по строкам основания
    
    Если КоличествоСтрок() = 0 Тогда
        Сообщить("Товар в заявке не является маркированным, убедитесь что товар данной заявки существует в справочнике маркировка.");
    КонецЕсли;
    
    Если ТаблицаДокумента.КоличествоСтрок() = 0 Тогда
        Сообщить("В документе основании не заполнена табличная часть");
    КонецЕсли;
    
    ТЗШкоды = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗШкоды);
    
    Возврат "";
    
КонецФункции // ЗаполнениеПоДокументуОснованию()

Процедура ВводНаОсновании(ДокОсн)
    ДокОснование = ДокОсн;                                          
    Фирма = ДокОсн.Фирма;
    Контрагент = ДокОсн.Контрагент;
    Автор = ДокОсн.Автор;
    ЗаполнениеПоДокументуОснованию();
    НашИНН = ДокОсн.Фирма.ЮрЛицо.ИНН;
    КонтрИНН = Контрагент.ЮрФизЛицо.ИНН;
    ПризнакУчастника = ДокОсн.ПризнакУчастника;
    Если ПризнакУчастника = 1 Тогда                                          
        ПризнакУчастника = "Да";
    Иначе
        ПризнакУчастника = "Нет";
    КонецЕсли;
    ФорматДата = Формат(ТекущаяДата(), "ДДДММГГГГ");
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
    // Процедура разбирает штрих-код, считанный сканером
    // и заполняет строки накладной
    Перем Упаковка,ТекКоличество, Спецификация;
    Перем ВремТовар, ВремЕдиница, ВремКоличество, ВремЦена;
    
    Перем СтрокаВозврЦена;
    Если Событие = "BarCodeValue" Тогда
        Штрихкод = СокрЛП(Данные);
        стр = 0;
        Если глПолучитьТоварПоШтрихкоду(Штрихкод, ВремТовар, ВремЕдиница, ВремКоличество) = 1 Тогда
            Если ТЗШКоды.НайтиЗначение(ВремТовар, стр, "Номенклатура") = 1 Тогда;
                АктивизироватьСтроку(стр);
                Для стр = 0 По КоличествоСтрок() Цикл
                ПолучитьСтрокуПоНомеру(стр);
                    Если (ПустоеЗначение(КодМаркировки) = 0) И (ВремТовар = Номенклатура) Тогда
                        АктивизироватьСтроку(стр + 1);
                    КонецЕсли;
                КонецЦикла;                                                          
            КонецЕсли;
        Иначе
            ИтогТЗ = СоздатьОбъект("ТаблицаЗначений");
            ВыгрузитьТабличнуюЧасть(ИтогТЗ);
            Если ИтогТЗ.НайтиЗначение(Штрихкод, стр, "КодМаркировки") = 1 Тогда
                Предупреждение("Данный код маркировки, уже был проверен, просканируйте следующий код маркировки");
            Иначе
                КодМаркировки = Штрихкод;
            КонецЕсли;
        
        КонецЕсли;

        глСканерПосылкаДанных(1);
    Иначе
        глОбработкаВнешнегоСобытия(Источник, Событие, Данные);    
    КонецЕсли;

КонецПроцедуры // ОбработкаВнешнегоСобытия()

Процедура Открыть()
    
    ТЗКоды = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗКоды);
    
    ИмяФайла = "Отгрузка.csv";
    КаталогФайла = "\\Server4\Обменник\ОтгрузкаМаркировка\";
    ПолноеНаименованиеФайла = КаталогФайла + ИмяФайла;
    РабочийСтол = "C:\Users\Dmitriy\Desktop\";    
    НомерУПД = 123;
    Файл = СоздатьОбъект("Текст");
    Файл.ДобавитьСтроку("ИНН отправителя,ИНН получателя,ИНН собственника,Дата передачи товара,Номер первичного документа,Дата первичного документа,Вид оборота товаров,Причина вывода из оборота, Дата вывода из оборота,Идентификатор гос.контракта,Отгрузка неучастнику,Версия");
    Файл.ДобавитьСтроку(НашИНН + "," + КонтрИНН + "," + НашИНН + "," + ФорматДата + "," + НомерУПД + "," + ФорматДата + "," + "Продажа" + ",,,," + ПризнакУчастника + "," + "4");
    Файл.ДобавитьСтроку("Параметры товаров");
    Файл.ДобавитьСтроку("КИ,КИТУ,Цена за единицу,Сумма НДС");
    Для А = 1 По ТЗКоды.КоличествоСтрок() Цикл
        ПолучитьСтрокуПоНомеру(А);
        ТЗКоды.ПолучитьСтрокуПоНомеру(А);    
        SGTIN = Сред(ТЗКоды.КодМаркировки, 1, 31);
        НайденныйСимвол = Найти(SGTIN, """");
        Файл.ДобавитьСтроку("""" + СтрЗаменить(СокрЛП(SGTIN),"""","""""") + """" + ",," + Цена + "," + СуммаНДС);
    КонецЦикла;
    Попытка
        Файл.Записать("\\Server4\Обменник\ОтгрузкаМаркировка\Отгрузка.csv");
    Если ФС.ВыбратьФайл(0,ИмяФайла,КаталогФайла,,"Все файлы (*.csv) |*.csv")=1 Тогда
         ЗапуститьПриложение("notepad.exe" + " " + ПолноеНаименованиеФайла);;
    КонецЕсли;
        
        //ФС.КопироватьФайл(ПолноеНаименованиеФайла,РабочийСтол, 1);
        //ФС.УдалитьФайл(ПолноеНаименованиеФайла);
    Исключение
        Предупреждение("Файл не сформирован! Проверьте правильность наполнения таблицы");
    КонецПопытки
КонецПроцедуры  

Процедура Записать()
    Записать();
КонецПроцедуры


Ругает вот эту строку
ТЗШКоды.НайтиЗначение(ВремТовар, стр, "Номенклатура")
2 dedmoroz777
 
03.03.21
04:21
У тебя ТЗШкоды создается если только документ введен на основании. Иначе это не тз вовсе.
3 Mafiozaa
 
03.03.21
04:28
(2) Воот оно в чем дело, Михалыч, да он запускает не с основания, а просто записанный, все понял. спасибо)
4 Злопчинский
 
03.03.21
21:12
(1) внезапно дело не в компах а в кривых руках... ;-)
5 victuan1
 
04.03.21
04:50
(4) Так ты все темы ТС почитай. Они все ведут к твоему выводу про "руки".
6 Mafiozaa
 
04.03.21
05:00
(5) (4) Ребят, ну я же не спорил что в моих руках дело, просто странно для меня было, когда вчера человек работал все хорошо, а сегодня звонит и говорит что что то не то
7 Mafiozaa
 
04.03.21
05:08
(5) Ну извини, что я в 1с не столько, сколько ты на этом форуме
8 Mikeware
 
04.03.21
08:21
(7) "Плох тот чайник, который не мечтает стать самоваром"©
9 Kigo_Kigo
 
04.03.21
08:43
(8) Да не, скорее, не ошибается тот, кто ничего не делает...
10 MWWRuza
 
гуру
04.03.21
09:53
Не, ну человек ошибку понял, после первой подсказки.
Значит не даром написал, думаю, на будущее будет внимательнее, и такого больше не напишет.
На ошибках учатся, все когда-то начинали....
11 Mikeware
 
04.03.21
10:20
(9) и это тоже.
Но просто "время" - это далеко не критерий (доказано Мыколой Балановым, Юлией Борщ (уж простите, забыл все их ники), Мисти, и незабвенным falselight).
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший