|
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)) включается просто: Отладка/Остановить Книга знаний: Хитрости отладки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |