|
Присвоение значений в таблице значений | ☑ | ||
---|---|---|---|---|
0
Креатив
05.03.14
✎
10:41
|
Есть таблица значений, полученная в процессе выгрузки результата запроса. Добавляю строчку. Пытаюсь присвоить значения. Некоторые поля принимают значения, а некоторые остаются неопределёнными. Я подозреваю, что какая-то ерунда с типами. Как это лечить?
|
|||
1
Ненавижу 1С
гуру
05.03.14
✎
10:42
|
(0) присваивать нормальные типы
|
|||
2
Креатив
05.03.14
✎
10:44
|
(1)А если по-русски?
|
|||
3
Мимохожий Однако
05.03.14
✎
10:45
|
Можно заранее определить типы для ТЗ, в которую выгружаешь результат запроса
|
|||
4
Креатив
05.03.14
✎
10:47
|
(2)А если мне в колонке нужны значения различных типов? Значения субконто, например?
|
|||
5
Мимохожий Однако
05.03.14
✎
10:49
|
(4)Значит надо определить тип в виде массива типов.
ОписаниеТипов (TypeDescription) Свойства: КвалификаторыДаты (DateQualifiers) КвалификаторыДвоичныхДанных (BinaryDataQualifiers) КвалификаторыСтроки (StringQualifiers) КвалификаторыЧисла (NumberQualifiers) Методы: ПривестиЗначение (AdjustValue) СодержитТип (ContainsType) Типы (Types) Конструкторы: На основании объекта ОписаниеТипов На основании типов и квалификаторов Описание: Представляет собой объект для управления допустимыми типами значений. В основном предназначен для присвоения в качестве значений соответствующим свойствам других объектов. Набор допустимых типов и квалификаторы примитивных типов задаются при создании объекта. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: TypeDescription Пример: // Создание описателя типов для таблицы значений КЧ = Новый КвалификаторыЧисла(12,2); КС = Новый КвалификаторыСтроки(20); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); Массив.Очистить(); Массив.Добавить(Тип("Число")); ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); // Создание таблицы значений ТаблицаЗначений = Новый ТаблицаЗначений; // добавим в таблицу значений три колонки ТаблицаЗначений.Колонки.Добавить("Отдел",ОписаниеТиповС,"Отдел",20); ТаблицаЗначений.Колонки.Добавить("Сотрудник",ОписаниеТиповС, "Фамилия сотрудника",20); ТаблицаЗначений.Колонки.Добавить("Оклад",ОписаниеТиповЧ,"Оклад",10); |
|||
6
Креатив
05.03.14
✎
10:52
|
(5) Да уж. 1с по своему неудобству превзошла типизированные языки программирования.
|
|||
7
Wobland
05.03.14
✎
10:53
|
сразу из запроса получить готовое ещё не предлагали?
|
|||
8
Мимохожий Однако
05.03.14
✎
10:54
|
(6)Да ладно ))
|
|||
9
Ненавижу 1С
гуру
05.03.14
✎
10:54
|
(6) ты лучше покажи как у тебя не присваиваются значения
|
|||
10
Креатив
05.03.14
✎
11:03
|
(9)
поПодр и дляРаспределения - результаты запросов (ТЗ) Для Каждого ст Из поПодр Цикл др = дляРаспределения.Добавить(); др.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01"); др.Сбк1 = ст.нг; //это др.сбк2 = ст.Подразделение; // и это др.СуммаОборотКт = ст.СуммаР; КонецЦикла; |
|||
11
Wobland
05.03.14
✎
11:06
|
расстреливать надо за такие имена и подходы
|
|||
12
Godofsin
05.03.14
✎
11:06
|
(11) +1
|
|||
13
Креатив
05.03.14
✎
11:08
|
(11)И с какой стороны ты предлагаешь зайти?
|
|||
14
Ненавижу 1С
гуру
05.03.14
✎
11:08
|
теперь, какой тип у "др.Сбк1" и "ст.нг"
имена конечно жгут |
|||
15
Godofsin
05.03.14
✎
11:09
|
(13) Уже предложили в (7)
|
|||
16
Мимохожий Однако
05.03.14
✎
11:10
|
Встань отладчиком на проблемную строку и посмотри: типы значений слева и справа от равенства, а так же значения.
Вместо ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01"); можно напрямую указать предопределенный счет |
|||
17
Креатив
05.03.14
✎
11:10
|
(15)Не вариант. Значения субконто в запросах разные. Получающиеся типы тоже разные.
|
|||
18
Мимохожий Однако
05.03.14
✎
11:11
|
Отладчик запусти.
|
|||
19
Мимохожий Однако
05.03.14
✎
11:12
|
Запрос покажи. Не стесняйся.
|
|||
20
Wobland
05.03.14
✎
11:12
|
(17) можно попробовать включить мозг и понять, что же всё-таки требуется поиметь на финише
|
|||
21
Креатив
05.03.14
✎
11:13
|
(18) Я из него и не выходил.
др.сбк1 неопределено ст.нг номенклатурные группы |
|||
22
Мимохожий Однако
05.03.14
✎
11:16
|
После прохождения у др.сбк1 тип и значения поменялись?
|
|||
23
Ненавижу 1С
гуру
05.03.14
✎
11:20
|
(21) тип поля "сбк1" а не текущего значения
|
|||
24
Креатив
05.03.14
✎
11:23
|
(19) Да хоть весь код. Я уже понял, что придётся предварительно создавать ТЗ. Есть ли возможность назначить колонке тип ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные
Запрос = Новый Запрос; ТекстЗапроса90 = // НДС к вычету "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | 0 КАК сбк2, | Значение(Перечисление.ВидыПлатежейВГосБюджет.Налог) КАК сбк1, | ХозрасчетныйОбороты.СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&дт1, &дт2, Авто, Счет.Код = ""90.01.1"", , Организация = &орг, , ) КАК ХозрасчетныйОбороты"; Запрос.Текст = ТекстЗапроса90; Запрос.УстановитьПараметр("орг", Организация); Запрос.УстановитьПараметр("дт1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("дт2", КонецМесяца(Дата)); дляРаспределения = Запрос.Выполнить().Выгрузить(); ТекстЗапроса90 = // по ЕНВД "ВЫБРАТЬ | ""20.01"" КАК Счет, | ХозрасчетныйОбороты.Субконто1 КАК сбк1, | ХозрасчетныйОбороты.СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&дт1, &дт2, Авто, Счет.Код = ""90.01.2"", , Организация = &орг, , ) КАК ХозрасчетныйОбороты"; Запрос.Текст = ТекстЗапроса90; Запрос.УстановитьПараметр("орг", Организация); Запрос.УстановитьПараметр("дт1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("дт2", КонецМесяца(Дата)); дляПодр = Запрос.Выполнить().Выгрузить(); Для Каждого нг Из ДляПодр Цикл ТекстЗапроса20 = // подразделения по данной номенклатурной группе "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.Субконто1 КАК НГ, | ХозрасчетныйОбороты.Подразделение, | ХозрасчетныйОбороты.СуммаОборотДт КАК оборот20 |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&дт1, &дт2, Авто, | Счет.Код = ""20.01"",, | Организация = &орг И Субконто1 = &нг,, | ) КАК ХозрасчетныйОбороты"; Запрос.Текст = ТекстЗапроса20; Запрос.УстановитьПараметр("орг", Организация); Запрос.УстановитьПараметр("нг", нг.сбк1); поПодр = Запрос.Выполнить().Выгрузить(); МоиДоработки.РаспределитьСправедливо(поПодр, нг.СуммаОборотКт, "оборот20"); Для Каждого ст Из поПодр Цикл др = дляРаспределения.Добавить(); др.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01"); др.Сбк1 = ст.нг; др.сбк2 = ст.Подразделение; др.СуммаОборотКт = ст.СуммаР; КонецЦикла; КонецЦикла; |
|||
25
Креатив
05.03.14
✎
11:30
|
(23)Если 1С берёт из запроса, то Перечисление.ВидыПлатежейВГосБюджет.Налог
|
|||
26
Мимохожий Однако
05.03.14
✎
11:38
|
Если тип значения для субконто не крититчно, то в запросе используй функцию Представление() и тогда у тебя все значения будут строковые.
|
|||
27
Ненавижу 1С
гуру
05.03.14
✎
11:40
|
(25) а суешь ты туда номенклатурные группы?
|
|||
28
Креатив
05.03.14
✎
11:51
|
(26)Критично.
(27)ну да. |
|||
29
The_SpecialOne
05.03.14
✎
11:51
|
предлагаю покрутить МассивВидовСубконто
МоиДоработки.РаспределитьСправедливо( - это прекрасно |
|||
30
Креатив
05.03.14
✎
12:02
|
Ппробовал вначале создать таблицу значений. Не помогает.
дляРаспределения = Новый ТаблицаЗначений; дляРаспределения.Колонки.Добавить("Счет"); дляРаспределения.Колонки.Добавить("сбк1"); дляРаспределения.Колонки.Добавить("сбк2"); дляРаспределения.Колонки.Добавить("СуммаОборотКт"); |
|||
31
Креатив
05.03.14
✎
12:22
|
Помогла только ручная выгрузка результата запроса в ТЗ. Это провал с точки зрения программирования.
|
|||
32
Ненавижу 1С
гуру
05.03.14
✎
12:23
|
(31) у тебя провал?
|
|||
33
Креатив
05.03.14
✎
12:25
|
(32)У 1С.)
|
|||
34
Godofsin
05.03.14
✎
12:26
|
(33)неа
|
|||
35
1Сергей
05.03.14
✎
12:30
|
(31) объясни чем ручная выгрузка результата запроса (пост (31)) отличается от неручной выгрузки результата запроса (пост (0))
|
|||
36
Креатив
05.03.14
✎
12:30
|
(35)Скоростью?
|
|||
37
Креатив
05.03.14
✎
12:31
|
(36)+ размером кода?
|
|||
38
Wobland
05.03.14
✎
12:32
|
(35) Вопрос("Вы действительно хотите произвести выгрузку результата запроса?"), не?
|
|||
39
1Сергей
05.03.14
✎
12:36
|
(38) а... и помогло именно это?
|
|||
40
Wobland
05.03.14
✎
12:41
|
у меня был какой-то костыль с предупреждением в одну секунду. принтер не успевал среагировать на пачку ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |