Имя: Пароль:
1C
1C 7.7
v7: КД2: Выгрузка из 7.7
,
0 Mikhail Volkov
 
06.09.18
07:08
Давненько не работал с 7.7. Пишу правила выгрузки из 7.7, не могу понять что за ошибки:
ПКС_ПередВыгрузкой_ДоговорыКонтрагентов_ОплатаВВалюте_Реквизит8<<?>>(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, НомерПКС, НомерПКО, ОбъектКоллекции, Значение, ТипПриемника, ИмяПКО, ИмяПКОВидСубконто, Пусто, Выражение, НеЗамещать, УзелКоллекцииСвойств)
Функция не обнаружена (ПКС_ПередВыгрузкой_ДоговорыКонтрагентов_ОплатаВВалюте_Реквизит8)

Сначала думал, что функции в ПКС "Перед выгрузкой" надо писать на языке 7.7 (подзабыл уже), отключил их пока. Но встретилась такая:
Значение = ?(Источник.ОплатаДоговора = 2, Истина, Ложь);
Вроде соответствует языку 7.7? Или дело в другом. В чем?
1 Cool_Profi
 
06.09.18
07:13
Нужно выгрузить модуль обработки (при выгрузке правил) и заменить им модуль в обработке, которую ты используешь
2 Aleksey
 
06.09.18
07:13
Модуль не выгрузил. Для 7-ки нужно модуль выгрузки выгружать
3 Chieftain
 
06.09.18
07:16
(0) #ЗагрузитьИзФайла не сработал.
Причина - или модуль не выгружен, или же не может его найти по "текущему" пути.

А твой код 77 не соответствует, булево давно ль в 77 появилось?
4 Mikhail Volkov
 
06.09.18
07:53
(1) Что за модуль, откуда выгружать, из КД2? И куда загружать? Использую для выгрузки обработку "Универсальная выгрузка данных в формате XML" (V77Exp.ert) из дистрибутива КД2.
(3) Что, булево нет в 7.7, А как правильно, так:
Значение = ?(Источник.ОплатаДоговора = 2, 1, 0);
А при загрузке поймет, что булево?
5 Cool_Profi
 
06.09.18
08:00
(4) В обработке выгрузки правил из кд есть галка выгрузить модуль обрабботки.
Берёшь его и меняешь в твоей v77exp еёный модуль на выгруженный.
Это же азы работы связки кд-77
6 Mikhail Volkov
 
06.09.18
08:14
(5) Не вижу такой галочки!? В КД открыты правила, кроме галочки "Открывать при входе" ничего. На какой вкладке ее искать?
7 Mikhail Volkov
 
06.09.18
09:02
Нашел флажок "Выгружать модуль обработки выгрузки данных для платформы 7.7", выгрузился МодульВыгрузки.txt. Как его загрузить в "Универсальная выгрузка данных в формате XML" (V77Exp.ert)? В обработке только имена файлов правил и данных.
8 Chieftain
 
06.09.18
09:05
(7) Либо заменяй в обработке модуль, либо напиши в начале:

#ЗагрузитьИзФайла <имя_текстового_файла_модуля>
9 Mikhail Volkov
 
06.09.18
09:28
(8) V77Exp.ert открыть конфигуратором 7.7, и там заменить модель, или добавить (или заменить весь модуль?) #ЗагрузитьИзФайла <имя_текстового_файла_модуля>?
10 Mikhail Volkov
 
06.09.18
10:08
Просто добавил #ЗагрузитьИзФайла <имя_текстового_файла_модуля>
Теперь при открытии обработки ошибки выдает... Например, не нравится ПКС_Контрагенты_ДокументУдостоверяющийЛичность_ПередВыгрузкойСвойства_10_11:

Если Источник.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо
    И Не (ПустаяСтрока(Источник.ДокументСерия) И ПустаяСтрока(Источник.ДокументНомер) И ПустаяСтрока(Источник.ДокументКемВыдан) И Не ЗначениеЗаполнено(Источник.ДокументДатаВыдачи)) Тогда
    Значение = ?(ЗначениеЗаполнено(Источник.ВидДокумента), СокрЛП(Источник.ВидДокумента), "Паспорт России") + ": " + СокрЛП(Источник.ДокументСерия) + " " + СокрЛП(Источник.ДокументНомер) + ?(ЗначениеЗаполнено(Источник.ДокументДатаВыдачи), " выдан: " + Источник.ДокументДатаВыдачи + " " + СокрЛП(Источник.ДокументКемВыдан), "");
Иначе
    Отказ = Истина;
КонецЕсли;

Как правильно под 7.7 написать?
11 Cool_Profi
 
06.09.18
10:10
Ну нету в 77 функции ЗначениеЗаполнено()
Не успели тогда завести ещё

ПустоеЗначение(<?>);
Синтаксис:
ПустоеЗначение(<Значение>)
Назначение:
Функция определяет, является ли пустым переданное в параметре значение. Возвращает число: 1- если значение пустое и 0 - если нет. При этом применяется следующее правило:
- значение неопределенного типа - всегда пустое;
- значение типа ''строка'' проверяется как в методе ПустаяСтрока;
- значение типа ''число'' проверяется на равенство нулю;
- значение типа ''дата'' проверяется на пустое значение;
- значения следующих типов: ''справочник'', ''перечисление'', ''документ'', ''счет'', ''вид субконто'', ''план счетов'', ''календарь'' проверяются как в методах Выбран  для соответствующего типа объекта.;
- значение типа ''СписокЗначений'' считается пустым, если в нем нет значений;
- значение типа ''ТаблицаЗначений'' считается пустым, если нет ни одной строки таблицы.
Параметры:
<Значение> - выражение любого типа данных, значение которого проверяется.
12 tgu82
 
06.09.18
10:30
Запишу ветку в к себе. Полезная информация.
13 Mikhail Volkov
 
06.09.18
13:52
(11) Спс, получилось. Где бы найти правила переноса КИ: адреса, телефоны, e-mail. В 7.7 это строки, в 8.3 табличные части справочников.
14 Mikhail Volkov
 
07.09.18
11:25
Нашел правила переноса КИ в Торговля+Склад, редакция 9.2 --> УправлениеТорговлей, перенес к себе. Но ошибку во время выгрузки дает:
Ошибка исполнения обработчика:  ПКС_ПередВыгрузкой_ВидыКонтактнойИнформации_МожноИзменятьСпособРедактирования_Реквизит5
  - Значение не представляет агрегатный объект (Получить)
ПКС_ВидыКонтактнойИнформации_МожноИзменятьСпособРедактирования_ПередВыгрузкойСвойства_5_24:

Если (Источник.Получить("Тип") = "Адрес") ИЛИ (Источник.Получить("Тип") = "Телефон") Тогда
    Значение = 1;
Иначе
    Значение = 0;
КонецЕсли;

Вроде все нормально. Единственно что смущает у ПКО ВидыКонтактнойИнформации источника нет!?
15 Mikhail Volkov
 
09.09.18
16:50
Кроме адресов и телефонов другой КИ нет, потому оставил только Значение = 1; Ошибок при выгрузке не стало. КИ передается.
В телефоны кроме его номера пишут всякие комментарии. Поэтому, чтобы их отделить добавил в ВыгрузитьТелефоны:

    ПозицияКомментарий = 0;
    Для Счетчик = 1 По СтрДлина(Телефон) Цикл
        Символ  = Сред(Телефон, Счетчик,  1);
        Если Найти("0123456789-(); ", Символ) = 0 Тогда
            ПозицияКомментарий = Счетчик;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Комментарий = "";
    Если ПозицияКомментарий > 1 Тогда
        Комментарий = Сред(Телефон, ПозицияКомментарий);
        Телефон        = СокрЛП(Лев(Телефон, ПозицияКомментарий -1));
    КонецЕсли;
    
    КоллекцияОбъектов.НоваяСтрока();
    КоллекцияОбъектов.Вид = Вид;
    КоллекцияОбъектов.Тип = "Телефон";
    КоллекцияОбъектов.Представление = Телефон;
    КоллекцияОбъектов.ЗначенияПолей = "НомерТелефона=" + Телефон + Симв(10) + ?(ПозицияКомментарий > 1, "Комментарий=" + Комментарий + Симв(10), "");
    КоллекцияОбъектов.НомерТелефона = Телефон;

Передается:
16 Mikhail Volkov
 
09.09.18
17:01
"НомерТелефона=8(34397)2-09-54
Комментарий=соседи; 8906-807-96-13"

Но при открытии телефона контрагента Комментарий пустой!? Может КоллекцияОбъектов.ЗначенияПолей нужно добавлять не "Комментарий=" + Комментарий + Симв(10), а что-то другое. Что?
17 Silgis
 
09.09.18
19:09
Заметка
18 Mikhail Volkov
 
10.09.18
05:19
Расписал полный состав полей ЗначенияПолей для телефона:

    ПозицияКомментарий = 0;
    Для Счетчик = 1 По СтрДлина(Телефон) Цикл
        Символ  = Сред(Телефон, Счетчик,  1);
        Если Найти("0123456789-(); ", Символ) = 0 Тогда
            ПозицияКомментарий = Счетчик;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Комментарий = "";
    Представление = Телефон;
    Если ПозицияКомментарий > 1 Тогда
        Комментарий = Сред(Телефон, ПозицияКомментарий);
        Телефон        = СокрЛП(Лев(Телефон, ПозицияКомментарий -1));
        Если Найти("0123456789", Прав(Телефон, 1)) = 0 Тогда
            Телефон = СокрЛП(Лев(Телефон, СтрДлина(Телефон) - 1));
        КонецЕсли;
    КонецЕсли;
    Если СтрДлина(Комментарий) < 3 Тогда    // Мусор
        ПозицияКомментарий = 0;
    КонецЕсли;
    
    КоллекцияОбъектов.НоваяСтрока();
    КоллекцияОбъектов.Вид = Вид;
    КоллекцияОбъектов.Тип = "Телефон";
    КоллекцияОбъектов.Представление = Представление;
    КоллекцияОбъектов.ЗначенияПолей = ?(ПозицияКомментарий > 1, "Представление=" + Телефон + Симв(10) + "КодСтраны=" + Симв(10) + "КодГорода=" + Симв(10), "")
                                    + "НомерТелефона=" + Телефон + Симв(10)
                                    + ?(ПозицияКомментарий > 1, "Добавочный=" + Симв(10) + "Комментарий=" + Комментарий + Симв(10), "");
    КоллекцияОбъектов.НомерТелефона = Телефон;

Предается к примеру КоллекцияОбъектов.Представление:
8-953-820-73-43 дочь
КоллекцияОбъектов.ЗначенияПолей:
Представление=8-953-820-73-43
КодСтраны=
КодГорода=
НомерТелефона=8-953-820-73-43
Добавочный=
Комментарий=дочь

Но при открытии телефона контрагента Комментарий пустой!? Что ни так?
19 hhhh
 
10.09.18
05:57
(18) Ну ЗначенияПолей - это же xml, какие-то там теги должны быть, а вы обычную строку лепите.
20 Mikhail Volkov
 
10.09.18
06:54
(19) Нет, КоллекцияОбъектов.ЗначенияПолей, а из нее далее формируется xml.
Состав полей взял из другой конвертации (не из 7.7), алгоритм ПереносКИ:

СтрокиКИ = Запрос.Выполнить().Выгрузить();
Для Каждого СтрокаКИ Из СтрокиКИ Цикл
    
    ВидКИ = СтрокаКИ.Вид;
    ТипКИ = СтрокаКИ.Тип;
    
    ЗначенияПолей = Новый Структура;
    Если ВидКИ = Справочники.ВидыКонтактнойИнформации.ИнострАдресФизЛица Тогда
        
        ЗначенияПолей.Вставить("Представление",             СтрокаКИ.Представление);
        ЗначенияПолей.Вставить("Страна",                    СтрокаКИ.Поле1);
        ЗначенияПолей.Вставить("КодСтраны",                 "");
        ЗначенияПолей.Вставить("Индекс",                    "");
        ЗначенияПолей.Вставить("Регион",                    "");
        ЗначенияПолей.Вставить("КодРегиона",                "");
        ЗначенияПолей.Вставить("РегионСокращение",          "");
        ЗначенияПолей.Вставить("Район",                     "");
        ЗначенияПолей.Вставить("РайонСокращение",           "");
        ЗначенияПолей.Вставить("Город",                     "");
        ЗначенияПолей.Вставить("ГородСокращение",           "");
        ЗначенияПолей.Вставить("НаселенныйПункт",           "");
        ЗначенияПолей.Вставить("НаселенныйПунктСокращение", "");
        ЗначенияПолей.Вставить("Улица",                     "");
        ЗначенияПолей.Вставить("УлицаСокращение",           "");
        ЗначенияПолей.Вставить("ТипДома",                   "");
        ЗначенияПолей.Вставить("Дом",                       "");
        ЗначенияПолей.Вставить("ТипКорпуса",                "");
        ЗначенияПолей.Вставить("Корпус",                    "");
        ЗначенияПолей.Вставить("ТипКвартиры",               "");
        ЗначенияПолей.Вставить("Квартира",                  "");
        ЗначенияПолей.Вставить("Комментарий",               СтрокаКИ.Комментарий);
        
    ИначеЕсли ТипКИ = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
        
        ЗначенияПолей.Вставить("Представление",             СтрокаКИ.Представление);
        ЗначенияПолей.Вставить("Страна",                    "РОССИЯ");
        ЗначенияПолей.Вставить("КодСтраны",                 "643");
        ЗначенияПолей.Вставить("Индекс",                    СтрокаКИ.Поле1);
        ЗначенияПолей.Вставить("Регион",                    СтрокаКИ.Поле2);
        ЗначенияПолей.Вставить("КодРегиона",                "");
        ЗначенияПолей.Вставить("РегионСокращение",          "");
        ЗначенияПолей.Вставить("Район",                     СтрокаКИ.Поле3);
        ЗначенияПолей.Вставить("РайонСокращение",           "");
        ЗначенияПолей.Вставить("Город",                     СтрокаКИ.Поле4);
        ЗначенияПолей.Вставить("ГородСокращение",           "");
        ЗначенияПолей.Вставить("НаселенныйПункт",           СтрокаКИ.Поле5);
        ЗначенияПолей.Вставить("НаселенныйПунктСокращение", "");
        ЗначенияПолей.Вставить("Улица",                     СтрокаКИ.Поле6);
        ЗначенияПолей.Вставить("УлицаСокращение",           "");
        ЗначенияПолей.Вставить("ТипДома",                   ?(ЗначениеЗаполнено(СтрокаКИ.ТипДома),Метаданные.Перечисления.ТипыДомов.ЗначенияПеречисления.Получить(Перечисления.ТипыДомов.Индекс(СтрокаКИ.ТипДома)).Имя,""));
        ЗначенияПолей.Вставить("Дом",                       СтрокаКИ.Поле7);
        ЗначенияПолей.Вставить("ТипКорпуса",                ?(ЗначениеЗаполнено(СтрокаКИ.ТипКорпуса),Метаданные.Перечисления.ТипыКорпусов.ЗначенияПеречисления.Получить(Перечисления.ТипыКорпусов.Индекс(СтрокаКИ.ТипКорпуса)).Имя,""));
        ЗначенияПолей.Вставить("Корпус",                    СтрокаКИ.Поле8);
        ЗначенияПолей.Вставить("ТипКвартиры",               ?(ЗначениеЗаполнено(СтрокаКИ.ТипКвартиры),Метаданные.Перечисления.ТипыКвартир.ЗначенияПеречисления.Получить(Перечисления.ТипыКвартир.Индекс(СтрокаКИ.ТипКвартиры)).Имя,""));
        ЗначенияПолей.Вставить("Квартира",                  СтрокаКИ.Поле9);
        ЗначенияПолей.Вставить("Комментарий",               СтрокаКИ.Комментарий);
        
    ИначеЕсли ТипКИ = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
        
        ЗначенияПолей.Вставить("Представление",             СтрокаКИ.Представление);
        ЗначенияПолей.Вставить("КодСтраны",                 СтрокаКИ.Поле1);
        ЗначенияПолей.Вставить("КодГорода",                 СтрокаКИ.Поле2);
        ЗначенияПолей.Вставить("НомерТелефона",             СтрокаКИ.Поле3);
        ЗначенияПолей.Вставить("Добавочный",                СтрокаКИ.Поле4);
        ЗначенияПолей.Вставить("Комментарий",               СтрокаКИ.Комментарий);
        
    Иначе  
        
        ЗначенияПолей.Вставить("Представление",             СтрокаКИ.Представление);
        ЗначенияПолей.Вставить("Комментарий",               СтрокаКИ.Комментарий);
        
    КонецЕсли;
    
    Результат = "";
    Для Каждого КлючИЗначение Из ЗначенияПолей Цикл
        Если ПустаяСтрока(КлючИЗначение.Значение) Тогда
            Продолжить;
        КонецЕсли;
        Результат = Результат + ?(Результат = "", "", Символы.ПС)+ КлючИЗначение.Ключ + "=" + СтрЗаменить(КлючИЗначение.Значение, Символы.ПС, Символы.ПС + Символы.Таб);
    КонецЦикла;
    
    НоваяСтрокаКИ = КоллекцияОбъектов.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрокаКИ, СтрокаКИ);
    НоваяСтрокаКИ.ЗначенияПолей = Результат;
    
КонецЦикла;
21 Mikhail Volkov
 
10.09.18
12:54
А Симв(10) и Символы.ПС + Символы.Таб одно и тоже?
22 hhhh
 
10.09.18
13:21
(21) нет
23 hhhh
 
10.09.18
13:22
(21) если одно и то же, зачем бы они тогда заменяли?
24 Mikhail Volkov
 
10.09.18
16:27
(23) Из разных конвертаций: Симв(10) - из ТиС 7.7 в УТ, Символы.ПС + Символы.Таб - из УПП в ERP. Наверное Символы.ПС и Символы.Таб в 7.7 нет.
25 Mikhail Volkov
 
12.09.18
06:34
КодСтраны и КодГорода вписал, из номера убрал все кроме цифр:

    ПозицияКомментарий = 0;
    Для Счетчик = 1 По СтрДлина(Телефон) Цикл
        Символ  = Сред(Телефон, Счетчик,  1);
        Если Найти("0123456789-(); ", Символ) = 0 Тогда
            ПозицияКомментарий = Счетчик;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Комментарий = "";
    Представление = Телефон;
    Если ПозицияКомментарий > 1 Тогда
        Комментарий = Сред(Телефон, ПозицияКомментарий);
        Телефон        = СокрЛП(Лев(Телефон, ПозицияКомментарий -1));
        Если Найти("0123456789", Прав(Телефон, 1)) = 0 Тогда
            Телефон = СокрЛП(Лев(Телефон, СтрДлина(Телефон) - 1));
        КонецЕсли;
    КонецЕсли;
    Если СтрДлина(Комментарий) < 3 Тогда    // Мусор
        ПозицияКомментарий = 0;
    КонецЕсли;
    КодСтраны = "";
    КодГорода = "";    
    Если (ПозицияКомментарий > 1) И (Лев(Телефон, 1) = "8") Тогда
        КодСтраны = "8";
        Телефон = СокрЛП(Прав(Телефон, СтрДлина(Телефон) - 1));    
        Если Найти("0123456789(", Лев(Телефон, 1)) = 0 Тогда
            Телефон = СокрЛП(Прав(Телефон, СтрДлина(Телефон) - 1));
        КонецЕсли;
        Если (Найти(Телефон, "(") = 0) И (Найти(Телефон, ")") = 0) Тогда
            ПозТире = Найти(Телефон, "-");
            Если ПозТире > 2 Тогда
                КодГорода = СокрЛП(Лев(Телефон, ПозТире - 1));
                Телефон = СокрЛП(Сред(Телефон, ПозТире + 1));
            КонецЕсли;
        ИначеЕсли (Найти(Телефон, ")") - Найти(Телефон, "(") > 2) И (Найти(Телефон, ")") < СтрДлина(Телефон)) Тогда
            КодГорода = СокрЛП(Сред(Телефон, Найти(Телефон, "(") + 1, Найти(Телефон, ")") - Найти(Телефон, "(") - 1));
            Телефон = СокрЛП(Сред(Телефон, Найти(Телефон, ")") + 1));
            Если Найти("0123456789", Лев(Телефон, 1)) = 0 Тогда
                Телефон = СокрЛП(Прав(Телефон, СтрДлина(Телефон) - 1));
            КонецЕсли;
        КонецЕсли;
        Если ПустаяСтрока(КодГорода) = 0 Тогда
            Цифры = "";
            Для Счетчик = 1 По СтрДлина(Телефон) Цикл
                Символ  = Сред(Телефон, Счетчик,  1);
                Если Найти("0123456789", Символ) > 0 Тогда
                    Цифры = Цифры + Символ;
                КонецЕсли;
            КонецЦикла;
            Телефон = Цифры;
        КонецЕсли;
    КонецЕсли;
    
    КоллекцияОбъектов.НоваяСтрока();
    КоллекцияОбъектов.Вид = Вид;
    КоллекцияОбъектов.Тип = "Телефон";
    КоллекцияОбъектов.Представление = Представление;
    КоллекцияОбъектов.ЗначенияПолей = ?(ПозицияКомментарий > 1, "Представление=" + Телефон + Симв(10) + "КодСтраны=" + КодСтраны + Симв(10) + "КодГорода=" + КодГорода + Симв(10), "")
                                    + "НомерТелефона=" + Телефон + Симв(10)
                                    + ?(ПозицияКомментарий > 1, "Добавочный=" + Симв(10) + "Комментарий=" + Комментарий + Симв(10), "");
    КоллекцияОбъектов.НомерТелефона = Телефон;

Предается к примеру КоллекцияОбъектов.Представление:
8-953-820-73-43 дочь
КоллекцияОбъектов.ЗначенияПолей:
Представление=8-953-820-73-43
КодСтраны=8
КодГорода=953
НомерТелефона=8207343
Добавочный=
Комментарий=дочь

Но при открытии телефона контрагента Комментарий пустой!?
И заметил КодГорода в форме совсем другой, вроде из последних, что я вводил (правил) другому контрагенту.
26 Mikhail Volkov
 
12.09.18
11:36
Переношу данные из 7.7 в 8.3 конфигурация МФО. Начал с контрагентов и физ. лиц. В демо-базе при открытии контрагента, если его вид физическое лицо, то открывается форма физ. лица. А в моей такого не происходит!? Видно что-то не перенес. Что?
В справочнике Физические лица есть ссылка на Контрагенты. А в Контрагентах - нет. В самой форме списка Контрагенты не видно, есть только:

&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
    
    Если НЕ Элемент.ТекущиеДанные.ЭтоГруппа Тогда
        КлючеваяОперация = "ОткрытиеФормыКонтрагенты";
        ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, КлючеваяОперация);
    КонецЕсли;
    
КонецПроцедуры

Как определить что не хватает?
27 Mikhail Volkov
 
12.09.18
12:46
Куда поставить точку останова, чтобы отладчиком в демо-базе посмотреть, по какому признаку принимается решение что открывать форму контрагента или физ. лица?
28 Вафель
 
12.09.18
12:47
(27) поставь в конечной форме точку останова и посмотри стек вызовов
29 Mikhail Volkov
 
12.09.18
14:13
(28) Ну поставил точку останова в форме Контрагенты в процедуре ПриОткрытии(). Стек вызовов выдал лишь одну строчку: Справочник.Контрагенты.Форма.ФормаЭлемента.Форма.ПриОткрытии(). А предыдущие где? Никогда не пользовался стеком вызовов, не умею...
30 Mikhail Volkov
 
13.09.18
11:44
Еще поставил точку останова в форме списка Контрагенты в процедуре СписокПередНачаломИзменения(). Когда начал открывать контрагента стек вызовов выдал строчку: Справочник.Контрагенты.Форма.ФормаСписка.Форма.СписокПередНачаломИзменения(). Прошагал процедуру, остановилась на 2-й точке. Стек вызовов заменил строку на Справочник.Контрагенты.Форма.ФормаЭлемента.Форма.ПриОткрытии(). Почему заменил, не вывел процедуры, которые выполнял между ними?
31 hhhh
 
13.09.18
11:54
(30) вроде нет таких форм. Это какая конфа у вас?
32 Mikhail Volkov
 
13.09.18
12:16
(31) 1С 8.3 Управление микрофинансовой организацией и кредитным потребительским кооперативом ПРОФ, редакция 3.0
33 hhhh
 
13.09.18
12:57
(32) не знаю тогда. вообще-то в типовых нигде нет, чтобы форма физлица вызывалась. Обычно  это та же форма Контрагенты, а на ней закладочка ФизЛицо, и у нее видимость включается Истина или Ложь.
34 Mikhail Volkov
 
13.09.18
14:33
Нет, где-то проводится анализ какую форму открывать: Контрагенты или ФизическиеЛица. Где найти это место, как? Стек вызовов мне поможет в этом? (никогда не пользовался)
35 Mikhail Volkov
 
14.09.18
07:13
Обычно отладка начинается по точке останова, или "Остановка по ошибке". А вроде есть еще такой режим: когда в программе начинается какое-то действие, запускается какой-то процесс. Например, фоновое задание запускается, или пользователь что-то начал делать... Как включить этот режим?
36 victuan1
 
14.09.18
07:24
Для 1С 7.7 луч.ше использовать не КД2.0, а это http://catalog.mista.ru/public/14395/
Удобнее в разы
37 Mikhail Volkov
 
14.09.18
10:31
(36) С 7.7 вроде все... Вот с отладкой в 8.3 УФ не получается, не могу отловить то место, где анализируется какую форму открывать: контрагента или физ. лица?
38 hhhh
 
14.09.18
10:51
(37) по идее процедура ОбработкаПолученияФормы

смотри в модуле менеджера справочника
39 Mikhail Volkov
 
14.09.18
12:49
А режим описанный в (35) существует? Не приснилось же мне...
40 hhhh
 
14.09.18
23:29
(39) в смысле? Ну то, что фоновые запускаются - это 100%. Даже можете не сомневаться.
41 GreyK
 
15.09.18
03:48
(0) За это "Значение = ?(Источник.ОплатаДоговора = 2, Истина, Ложь);
" надо сразу в больничку отправлять.
42 GreyK
 
15.09.18
03:51
+ (41) Ну нет в 7.7 понятия "булево".
43 Mikhail Volkov
 
15.09.18
06:36
(40) Запускается процесс отладки по точке останова? А без нее может запуститься? Например ждем выполнения назначенного задания... задание запустилось, и начался процесс отладки, видно откуда оно запустилось!?
Запуск фонового задания - это к примеру... Мне нужен этот режим, чтобы выяснить где анализируется что открывать контрагента или физ. лица? Начинаю открывать контрагента, и сразу начались отладка...
(42) С 7.7 вроде все...
44 victuan1
 
17.09.18
05:43
(43) Что означает загадочная фраза "С 7.7 вроде все...", которая повторяется уже второй раз?
45 Mikhail Volkov
 
17.09.18
08:37
(44) Пока все что можно выгрузить выгрузил. Сейчас в 8.3 разбираюсь, с отладкой... (43)
46 Mikhail Volkov
 
20.09.18
11:04
Выяснить где анализируется что открывать контрагента или физ. лица так и не нашел. Но проблему свою решил, нашел в справочнике Контрагенты ссылку на физ. лицо, написал обработку по заполнению этой ссылки, теперь работает как надо.
Теперь снова возникла проблема уже с УПП/КА1: документ ПоступлениеТоваровУслуг, тогда в нем одни услуги, то склад не ставится. После открытия такого документа Модифицированность формы становится Истина, хотя документ не изменялся! Одну причину нашел, в РаботаСДиалогами.УстановитьТипСкладаОрдера(ЭтотОбъект, ЭлементыФормы); ПриОткрытии(), устранил. А вторую причину никак не найду: Модифицированность формы становится Истина при переходе на вкладку "Услуги". Процедура ОсновнаяПанельПриСменеСтраницы(Элемент, ТекущаяСтраница) отсутствует.
Опять понадобился режим отладки без точки останова...
47 Salimbek
 
20.09.18
11:14
(46) Делаешь так: открываешь свой документ, в это время в Конфигураторе включаешь "Замер времени", в своем документе в 1С открываешь нужную вкладку и в Конфигураторе останавливаешь замер. Потом смотришь - в какие модули код заходил, выбираешь то, что понравится и ставишь там точку отладки.
48 Mikhail Volkov
 
21.09.18
08:10
(47) "Замер времени" вываливает большой список процедур, и не хронометрическом порядке. Но все же удалось найти нужную УслугиПриАктивизацииСтроки(), где устанавливается модифицированность формы. В ней вызывается РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(), но что в ней может устанавливать модифицированность формы понять не могу!?

// Процедура установки типа и доступности субконто в зависимости от  выбранного счета
//
// Параметры:
//      Счет - выбранный счет
//      Форма - форма(или табличное поле) на которой расположены счет и субконто
//      Префикс - префекс наименования субконто. к префиксу добавляется номер субконто на счете
//                для подписи с наименованием субконто предпологается имя
//                вида "Надпись" + Префикс + НомерСубконто
//                в случае если форма - это таб.поле, то надписи не устанавливаются
//
Процедура ПриВыбореСчетаВТабличномПоле(Счет, Субконто1, КолонкаСубконто1, Субконто2, КолонкаСубконто2, Субконто3, КолонкаСубконто3, КолонкаСчет = НЕОПРЕДЕЛЕНО, ТолькоПросмотр = ЛОЖЬ) Экспорт
    
    ЭлементыСубконто = Новый Структура("Субконто1,КолонкаСубконто1,Субконто2,КолонкаСубконто2,Субконто3,КолонкаСубконто3", Субконто1, КолонкаСубконто1, Субконто2, КолонкаСубконто2, Субконто3, КолонкаСубконто3);
    
    ЧислоАктивныхСубконто = Счет.ВидыСубконто.Количество();
    
    Для Сч = 1 По ЧислоАктивныхСубконто Цикл
        ТипСубк = Счет.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения;
        
        ЭлементыСубконто["КолонкаСубконто" + Сч].ТолькоПросмотр = ТолькоПросмотр;
        
        Если ТипЗнч(ЭлементыСубконто["КолонкаСубконто" + Сч]) = Тип("ПолеВвода") Тогда
            ЭлементыСубконто["КолонкаСубконто" + Сч].ВыбиратьТип = (ТипСубк.Типы().Количество() > 1);
            ЭлементыСубконто["КолонкаСубконто" + Сч].КнопкаОчистки = (ТипСубк.Типы().Количество() > 1);    
        Иначе
            ЭлементыСубконто["КолонкаСубконто" + Сч].ЭлементУправления.ВыбиратьТип = (ТипСубк.Типы().Количество() > 1);
        КонецЕсли;
            
        // Чтобы не устанавливался флаг модифицированности при открытии формы
        Если ТипСубк.ПривестиЗначение(ЭлементыСубконто["Субконто" + Сч]) <> ЭлементыСубконто["Субконто" + Сч] Тогда
            ЭлементыСубконто["Субконто" + Сч] = ТипСубк.ПривестиЗначение(ЭлементыСубконто["Субконто" + Сч]);
        КонецЕсли;
        
    КонецЦикла;
    
    Для Сч = (ЧислоАктивныхСубконто + 1) По 3 Цикл
            
        Если Не ЭлементыСубконто["Субконто" + Сч] = Неопределено Тогда
            ЭлементыСубконто["Субконто" + Сч] = Неопределено;
        КонецЕсли;
        
        ЭлементыСубконто["КолонкаСубконто" + Сч].ТолькоПросмотр = Истина;
        
    КонецЦикла;
    
    Если КолонкаСчет <> Неопределено Тогда
        КолонкаСчет.ТолькоПросмотр = ТолькоПросмотр;
    КонецЕсли;

    Если Не Субконто1 = ЭлементыСубконто.Субконто1 Тогда
        Субконто1 = ЭлементыСубконто.Субконто1;
    КонецЕсли;
    Если Не Субконто2 = ЭлементыСубконто.Субконто2 Тогда
        Субконто2 = ЭлементыСубконто.Субконто2;
    КонецЕсли;
    Если Не Субконто3 = ЭлементыСубконто.Субконто3 Тогда
        Субконто3 = ЭлементыСубконто.Субконто3;
    КонецЕсли;
    
КонецПроцедуры // ПриВыбореСчета()
49 Mikhail Volkov
 
21.09.18
13:00
За комментировал:
        // Чтобы не устанавливался флаг модифицированности при открытии формы
        Если ТипСубк.ПривестиЗначение(ЭлементыСубконто["Субконто" + Сч]) <> ЭлементыСубконто["Субконто" + Сч] Тогда
        //    ЭлементыСубконто["Субконто" + Сч] = ТипСубк.ПривестиЗначение(ЭлементыСубконто["Субконто" + Сч]);
        КонецЕсли;
флаг модифицированности теперь не устанавливается. Но правильно ли это?
50 Mikhail Volkov
 
22.09.18
05:34
(49) Не, неправильно, поправил в правилах обмена ПКО_ПоступлениеОбщихРасходов_ПослеЗагрузкиОбъекта, и никаких изменений в конфигурацию вносить не пришлось:

Для каждого СтрокаТЧ  Из Объект.Услуги Цикл
    Если Не ЗначениеЗаполнено(СтрокаТЧ.СчетЗатратНУ) Тогда
        СтрокаТЧ.СчетЗатратНУ                    =    БухгалтерскийУчет.ПреобразоватьСчетаБУвСчетНУ(Новый Структура("СчетБУ", СтрокаТЧ.СчетЗатрат));     
    КонецЕсли;
    СтрокаТЧ.СпособРаспределенияЗатратНаВыпуск    =    Справочники.СпособыРаспределенияЗатратНаВыпуск.НайтиПоНаименованию("Перенести на производственные расходы");
    
    ЧислоАктивныхСубконто = СтрокаТЧ.СчетЗатрат.ВидыСубконто.Количество();    //+МВ 21.09.2018
    ЭлементыСубконто = Новый Структура("Субконто1,Субконто2,Субконто3", СтрокаТЧ.Субконто1, СтрокаТЧ.Субконто2, СтрокаТЧ.Субконто3);
    Для Сч = 1 По ЧислоАктивныхСубконто Цикл
        ТипСубк = СтрокаТЧ.СчетЗатрат.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения;
        ЭлементыСубконто["Субконто" + Сч] = ТипСубк.ПривестиЗначение(ЭлементыСубконто["Субконто" + Сч]);
    КонецЦикла;
    
    Для Сч = (ЧислоАктивныхСубконто + 1) По 3 Цикл
        Если Не ЭлементыСубконто["Субконто" + Сч] = Неопределено Тогда
            ЭлементыСубконто["Субконто" + Сч] = Неопределено;
        КонецЕсли;
    КонецЦикла;
    
    СтрокаТЧ.Субконто1 = ЭлементыСубконто.Субконто1;
    СтрокаТЧ.Субконто2 = ЭлементыСубконто.Субконто2;
    СтрокаТЧ.Субконто3 = ЭлементыСубконто.Субконто3;
    
    ЧислоАктивныхСубконто = СтрокаТЧ.СчетЗатратНУ.ВидыСубконто.Количество();
    ЭлементыСубконто = Новый Структура("Субконто1,Субконто2,Субконто3", СтрокаТЧ.СубконтоНУ1, СтрокаТЧ.СубконтоНУ2, СтрокаТЧ.СубконтоНУ3);
    Для Сч = 1 По ЧислоАктивныхСубконто Цикл
        ТипСубк = СтрокаТЧ.СчетЗатратНУ.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения;
        ЭлементыСубконто["Субконто" + Сч] = ТипСубк.ПривестиЗначение(ЭлементыСубконто["Субконто" + Сч]);
    КонецЦикла;
    
    Для Сч = (ЧислоАктивныхСубконто + 1) По 3 Цикл
        Если Не ЭлементыСубконто["Субконто" + Сч] = Неопределено Тогда
            ЭлементыСубконто["Субконто" + Сч] = Неопределено;
        КонецЕсли;
    КонецЦикла;
    
    СтрокаТЧ.СубконтоНУ1 = ЭлементыСубконто.Субконто1;
    СтрокаТЧ.СубконтоНУ2 = ЭлементыСубконто.Субконто2;
    СтрокаТЧ.СубконтоНУ3 = ЭлементыСубконто.Субконто3;    //-МВ
КонецЦикла;
51 Mikhail Volkov
 
22.09.18
08:00
А режим отладки без точки останова (спрашивал в (43), (46)) включается просто: Отладка/Остановить Книга знаний: Хитрости отладки