|
Ключ структуры | ☑ | ||
---|---|---|---|---|
0
Droning
18.06.18
✎
15:59
|
доброго времени суток, подскажите, пожалуйста, правильно ли я переношу счетчик в качестве ключа в = структуру?
Функция СформироватьСтруктуруЗначений() Возврат Новый Структура("ОбъектСинх, СтатусСостояния"); КонецФункции //&НаКлиенте Процедура ДобавитьИнформациюВЛог(Инф, Статус, Тип) Если НЕ ЗначениеЗаполнено(СчетчикГлобальный) тогда СчетчикГлобальный = 1; КонецЕсли; СтруктураЗн = СформироватьСтруктуруЗначений(); СтруктураЗн.ОбъектСинх = Инф; СтруктураЗн.СтатусСостояния = Статус; Если Тип = "Контрагент" Тогда МассивДанных.Вставить("СчетчикГлобальный" + СчетчикГлобальный, СтруктураЗн); ИначеЕсли Тип = "Счет" Тогда МассивДанныхСчета.Вставить("СчетчикГлобальный" + СчетчикГлобальный, СтруктураЗн); ИначеЕсли Тип = "Рализация" Тогда МассивДанныхРеализации.Вставить("СчетчикГлобальный" + СчетчикГлобальный, СтруктураЗн); ИначеЕсли Тип = "ПлатежВходящий" Тогда //Объект.МассивДанныхРеализации.Вставить("СчетчикГлобальный" + СчетчикГлобальный, СтруктураЗн); ИначеЕсли Тип = "ПлатежИсходящий" Тогда КонецЕсли; СчетчикГлобальный = СчетчикГлобальный + 1; КонецПроцедуры |
|||
1
hhhh
18.06.18
✎
16:06
|
(0) до 999 должно работать
|
|||
2
Droning
18.06.18
✎
16:11
|
почему-то эта структура не заполняется...
|
|||
3
Droning
18.06.18
✎
16:11
|
СчетчикИзмененных = 0;
СчетчикДобавленных = 0; Если МассивДанных.Количество()>0 Тогда Для Каждого Элемент из МассивДанных Цикл ТекстовыйФайл.ДобавитьСтроку("" + СокрЛП(ТекущаяДата()) + " " + Элемент.СтатусСостояния + " контрагент: " + Элемент.ОбъектСинх); Если Элемент.СтатусСостояния = "Изменен" Тогда СчетчикИзмененных = СчетчикИзмененных + 1; ИначеЕсли Элемент.СтатусСостояние = "" Тогда СчетчикДобавленных = СчетчикДобавленных + 1; КонецЕсли; КонецЦикла; ТекстовыйФайл.ДобавитьСтроку("Всего создано контрагентов" + СчетчикДобавленных + ""); ТекстовыйФайл.ДобавитьСтроку("Всего измененно контрагентов" + СчетчикИзмененных + ""); ТекстовыйФайл.ДобавитьСтроку("Всего создано и изменено: " + МассивДанных.Количество() + " контрагентов"); КонецЕсли; |
|||
4
Droning
18.06.18
✎
16:12
|
этот код отладчик проскакиевает.. может тут что-то не так? Или данные не заполняются в структуру МассивДанных по другой причине?
|
|||
5
tesseract
18.06.18
✎
16:17
|
(2) Во первых она у тебя на сервере формируется каждый раз - у тебя на процедуре нет "&НаКлиенте".
Отладчик поэтому ее и проскакивает. Переменные скорее всего недоступны на сервере, если ты их как реквизиты формы не объявил. |
|||
6
Droning
18.06.18
✎
16:20
|
(5) в реквимзитах формы есть переменная МассивДанных... и счетчики.
|
|||
7
Chikko
18.06.18
✎
16:23
|
(6) Значит не выполняется ни одно из условий. Скинь пример вызова процедуры.
|
|||
8
tesseract
18.06.18
✎
16:25
|
(6) МассивДанных какой тип значений ?
|
|||
9
Droning
18.06.18
✎
16:25
|
(8) произвольный
|
|||
10
Droning
18.06.18
✎
16:26
|
а что если массивДанных пихнуть в реквизиты самой обработки? и обращаться Объект.МассивДанных?
|
|||
11
tesseract
18.06.18
✎
16:27
|
(9) А когда из него структура-то создается? И зачем вообще на сервере этот код выполнять?
|
|||
12
hhhh
18.06.18
✎
16:27
|
(9) а Статус какого типа? Точно строка?
|
|||
13
tesseract
18.06.18
✎
16:28
|
(10) А зачем вообще тут структура, если можно массивом обойтись или таблицей значений?
|
|||
14
tesseract
18.06.18
✎
16:29
|
(12) Не "статус" уж тогда, а "Тип". Он тут сравнивается.
|
|||
15
Droning
18.06.18
✎
16:29
|
ТЗ не передается с клиента на сервер насколько я знаю.. а вот по поводу массива уже не помню . опытный дядька говорил, что тут лучше структурой.
|
|||
16
Droning
18.06.18
✎
16:30
|
(12) Статус точно строка
|
|||
17
Droning
18.06.18
✎
16:30
|
(11) структура создается при записи контрагента после синхронизации с утм5
|
|||
18
Droning
18.06.18
✎
16:31
|
(7) Если (СтрокаТЗ.Статус = "new_customer") ИЛИ ((СтрокаТЗ.Статус = "modified_customer") И (СтрокаТЗ.ic_id = "")) Тогда
//<< Карачун М.И. 18.01.2011 // Сначала поищем контрагента, потом будем создавать // НовКонтрагент = Контрагенты.СоздатьЭлемент(); // попробуем найти по ИНН, если ИНН пустой то искать не будем // потому что у Физ лиц он может быть не заполнен НайденныйКонтрагент = Неопределено; Если СокрЛП(СтрокаТЗ.inn) <> "" Тогда НайденныйКонтрагент = Контрагенты.НайтиПоРеквизиту("ИНН",СокрЛП(СтрокаТЗ.inn)); КонецЕсли; // если не нашли попробуем по наименованию Если НайденныйКонтрагент = Неопределено ИЛИ НайденныйКонтрагент.Пустая() Тогда НайденныйКонтрагент = Контрагенты.НайтиПоНаименованию(СокрЛП(СтрокаТЗ.name)); КонецЕсли; // если и теперь не нашли то создадим Если НЕ НайденныйКонтрагент.Пустая() Тогда // Отметим в строке ТЗ вновь полученный код контрагента. СтрокаТЗ.ic_id = НайденныйКонтрагент.Код; //Перезапишем Емеил Если СокрЛП(СтрокаТЗ.email) <> "" Тогда кОбъект = НайденныйКонтрагент.ПолучитьОбъект(); Контакты = кОбъект.КонтактнаяИнформация; НужнаяСтрока = Контакты.Найти(Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты, "Вид"); Если НужнаяСтрока = Неопределено Тогда НовКонтакт = Контакты.Добавить(); Иначе НовКонтакт = НужнаяСтрока; КонецЕсли; НовКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты; НовКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты; НовКонтакт.Представление = СокрЛП(СтрокаТЗ.email); //НовКонтрагент.Записать(); кОбъект.Записать(); КонецЕсли; ДобавитьИнформациюВЛог(НайденныйКонтрагент.Ссылка, "Изменен", "Контрагент"); Сообщить("Контрагент " + НайденныйКонтрагент + " найден и синхронизирован"); |
|||
19
Droning
18.06.18
✎
16:33
|
кажется мне что тут какой-то геморрой с переносом инфы с клиента на сервер или что-то около того..
|
|||
20
tesseract
18.06.18
✎
16:37
|
(15) ЗначениеВРеквизитФормы() и все передается. У Дядьки опыт не в ту сторону. Структура больше места занимает.
(19) Осталось выяснить что. |
|||
21
hhhh
18.06.18
✎
16:40
|
(20) это раньше было ЗначениеВРеквизитФормы().
теперь работает всё и без него. И на клиенте и на сервере. Главное чтобы у тз были колонки определены. |
|||
22
Droning
18.06.18
✎
16:49
|
(21) (20) так что собственно сделать? если действовать через это ЗначениеВРеквизитФормы(), то как конкретно?
|
|||
23
tesseract
18.06.18
✎
16:56
|
(21) С чего это "Было"? ТаблицаЗначений и ДанныеФормыКоллекция это разные типы данных. У них есть общие методы - это да.
(22) Сделай тз как реквизит формы и добавь туда поля, кинь ее на форму и смотри свой лог. Потом просто пиши туда, а не в эти кучи массивов. В твоем случае РеквизитФормывЗначение и ЗначениеВРеквизитФормы могут и не понадобиться. |
|||
24
hhhh
18.06.18
✎
16:58
|
(23) ну я уже ЗначениеВРеквизитФормы() года три не использую. Нет необходимости.
|
|||
25
Droning
18.06.18
✎
17:07
|
{ВнешняяОбработка.СинхронизацияДанныхСUTM5_БП30.Форма.ФормаУправляемая.Форма(3015)}: Значение не является значением объектного типа (Вставить)
МассивДанных.Вставить("СчетчикГлобальный" + СчетчикГлобальный, СтруктураЗн); |
|||
26
Droning
18.06.18
✎
17:07
|
как-то так
|
|||
27
tesseract
18.06.18
✎
17:10
|
(25) Добавь в "ПриСозданииНаСервере" МассивДанных = Новый Структура()
|
|||
28
hhhh
18.06.18
✎
17:11
|
(26) или сделай МассивДанных тип ТЗ с 3мя колонками
|
|||
29
tesseract
18.06.18
✎
17:19
|
(28) Данный вариант я уже описал вроде как. От счетчика и ИначеЕсли сразу избавляешься.
|
|||
30
hhhh
18.06.18
✎
17:21
|
(29) согласен
|
|||
31
Droning
18.06.18
✎
17:32
|
(27) не сработало
|
|||
32
Droning
18.06.18
✎
17:34
|
(28) немного не понимаю ход мысли. какими должны быть эти колонки? Инф, Статус, Тип?
|
|||
33
hhhh
18.06.18
✎
17:35
|
(32) да
|
|||
34
dezss
18.06.18
✎
17:35
|
Э...может ТС озвучит задачу?
|
|||
35
Droning
18.06.18
✎
17:37
|
(26) вообще какова суть... мне надо сделать так, чтобы файл на клиенте с логом синхронизации записался. причем синхронизируются счета, реализации и контрагенты.(3разных типа). они создаются или изменяются(2 состояния). тип и состояние должно отображаться в логе.
|
|||
36
tesseract
18.06.18
✎
22:38
|
(35)Зачем на клиенте? Если просто информацию выдать оператору - он на нее положит свой лак для волос. Если будут терки - скажет, что ничего не видела и тд.
Если для целей отладки - пиши в журнал регистрации. И для разрешения споров сразу результат ответы оператора на все твои модальные диалоги вроде "Я ведь тебя явно предупредил, пока ты обсуждала тортик от своей свахи? " |
|||
37
Tateossian
19.06.18
✎
02:12
|
(0) Лучше через соответствие. Конвертация в строки тогда не нужна будет.
|
|||
38
Сияющий в темноте
19.06.18
✎
10:25
|
(37) правильно,соответствие,это та же структура,только с произвольным ключом.
Если хочется использовать структуру,то ключ проще формировать,добавляя символ к сжатому числу "К"+Формат(Счетчик,"ЧГ=0;ЧН=0;") |
|||
39
Адинэснег
19.06.18
✎
10:32
|
(0) какой то песец рождается
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |