| 
    
        
     
     | 
    
  | 
Запись движений в регистр накопления | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Яна93    
     30.11.15 
            ✎
    15:34 
 | 
         
        Всем привет! У меня вопрос..как записать движения в регистр накопления из документа с табличной частью следующего вида:
 
        Номенклатура | День 1 | День 2 | День 3 | День 4 ... | День N Где дни это даты как заголовок колонки..а в значениях самой колонки будет количество самой номенклатуры.. Регистр сведений будет следующего вида: Дата | Номенклатура | Количество.. Как будет выглядеть процедура по записи в регистр?  | 
|||
| 
    1
    
        Cyberhawk    
     30.11.15 
            ✎
    15:37 
 | 
         
        Дерево реквизитов табичной части из конфигуратора покажи на картинке     
         | 
|||
| 
    2
    
        aleks_default    
     30.11.15 
            ✎
    15:39 
 | 
         
        Для каждого Колонка из ТабличнаяЧасть.Колонки цикл
 
        ЧислоДень = Число(СтрЗаменить(Колонка.Имя,"День",""); День = Дата(ЧислоГод,ЧислоМесяц,ЧислоДень); КонецЦикла;  | 
|||
| 
    3
    
        RomanYS    
     30.11.15 
            ✎
    15:41 
 | 
         
        Запись.Дата = НачМесяца + (инд-1)*3600*24;
 
        Запись.Количество = Строка["День"+инд];  | 
|||
| 
    4
    
        Nuobu    
     30.11.15 
            ✎
    15:41 
 | 
         
        Для каждого Колонка из ТабличнаяЧасть.Колонки цикл 
 
        Попытка ЧислоДень = Число(СтрЗаменить(Колонка.Имя,"День",""); Исключение Продолжить; КонецПопытки; День = Дата(ЧислоГод,ЧислоМесяц,ЧислоДень); КонецЦикла;  | 
|||
| 
    5
    
        aleks_default    
     30.11.15 
            ✎
    15:42 
 | 
         
        (4) списал:)     
         | 
|||
| 
    6
    
        Мимохожий Однако    
     30.11.15 
            ✎
    15:42 
 | 
         
        (0)А структуру регистра накопления Пушкин будет угадывать?     
         | 
|||
| 
    7
    
        Nuobu    
     30.11.15 
            ✎
    15:43 
 | 
         
        (5) Исправил.     
         | 
|||
| 
    8
    
        Nuobu    
     30.11.15 
            ✎
    15:43 
 | 
         
        (6) Регистр сведений будет следующего вида: Дата | Номенклатура | Количество..     
         | 
|||
| 
    9
    
        Яна93    
     30.11.15 
            ✎
    15:44 
 | 
         
        (1) http://pixs.ru/showimage/tchjpg_5914411_19695687.jpg
 
        Документ с такой табличной частью составила сама сегодня..  | 
|||
| 
    10
    
        salvator    
     30.11.15 
            ✎
    15:44 
 | 
         
        (0) "Где дни это даты как заголовок колонки"
 
        В заголовке именно "День 1" или именно полная дата указана как дд.мм.гггг?  | 
|||
| 
    11
    
        aleks_default    
     30.11.15 
            ✎
    15:44 
 | 
         
        (7)Ой да ладно, если структура таб. части постоянна, то попытка нафиг ненужна.     
         | 
|||
| 
    12
    
        Яна93    
     30.11.15 
            ✎
    15:45 
 | 
         
        (6) Регистр накопления оборотный..     
         | 
|||
| 
    13
    
        Яна93    
     30.11.15 
            ✎
    15:45 
 | 
         
        (10) полная дата указана как дд.мм.гггг     
         | 
|||
| 
    14
    
        Nuobu    
     30.11.15 
            ✎
    15:45 
 | 
         
        (11) А первые три колонки?     
         | 
|||
| 
    15
    
        Cyberhawk    
     30.11.15 
            ✎
    15:45 
 | 
         
        Лучше бы ТЧ имела три реквизита: НомерДня, Номенклатура, Количество... а в форме бы уже "обернула" их в красивую динамически создаваемую и заполняемую ТЧ     
         | 
|||
| 
    16
    
        aleks_default    
     30.11.15 
            ✎
    15:45 
 | 
         
        Вернее попытка нужна не при преобразовании в число, а при преобразовании в дату.     
         | 
|||
| 
    17
    
        Nuobu    
     30.11.15 
            ✎
    15:46 
 | 
         
        (16) Она нужна и там и там.     
         | 
|||
| 
    18
    
        Яна93    
     30.11.15 
            ✎
    15:47 
 | 
         
        (15) я так не умею..есть где подобная статься? Я ни чего не находила..     
         | 
|||
| 
    19
    
        Мимохожий Однако    
     30.11.15 
            ✎
    15:47 
 | 
         
        (15)+100500.     
         | 
|||
| 
    20
    
        aleks_default    
     30.11.15 
            ✎
    15:48 
 | 
         
        Ну, блин, не на полстраницы текста же мне писать учитывая все нюансы. 
 
        Идея,короче, понятна...  | 
|||
| 
    21
    
        aleks_default    
     30.11.15 
            ✎
    15:49 
 | 
         
        (15) Там дофига кода писать придется. Обработчики на все возможные события переделывать.     
         | 
|||
| 
    22
    
        salvator    
     30.11.15 
            ✎
    15:51 
 | 
         
        (18) Количество колонок равно количеству дней в месяце от даты документа?     
         | 
|||
| 
    23
    
        Cyberhawk    
     30.11.15 
            ✎
    15:53 
 | 
         
        (18) Поищи "динамическое создание элементов управления на форме" в разных вариациях на ИС
 
        (21) Соглашусь... конечно, зависит от требований к удобству по работе с формой... судя по ТС, там нет никаких выкрутасов особых не нужно (пока)  | 
|||
| 
    24
    
        Nuobu    
     30.11.15 
            ✎
    15:53 
 | 
         
        (22) Ну, только если количество дней в месяцах совпадает, то да))     
         | 
|||
| 
    25
    
        Cyberhawk    
     30.11.15 
            ✎
    15:55 
 | 
         
        (22) (24) Это уже рюшечки - ведь довольно просто программно изменить видимость последних колонок в таблице в зависимости от кол-ва дней в месяце     
         | 
|||
| 
    26
    
        Cyberhawk    
     30.11.15 
            ✎
    15:55 
 | 
         
        +(25) или еще проще - ругаться при записи из формы, если в "запрещенном" дне введены данные     
         | 
|||
| 
    27
    
        Яна93    
     30.11.15 
            ✎
    15:57 
 | 
         
        Так как в итоге при проведении документа записать движения? Обычный конструктор движений тут не помощник..     
         | 
|||
| 
    28
    
        salvator    
     30.11.15 
            ✎
    15:57 
 | 
         
        (27) См (2), (4). Проходи циклом по колонкам, выцепляй из их имени дату и пиши ее в РС     
         | 
|||
| 
    29
    
        Cyberhawk    
     30.11.15 
            ✎
    15:58 
 | 
         
        (27) Создаешь набор записей... далее цикл по табличной части... по каждой строке еще один цикл по дням...     
         | 
|||
| 
    30
    
        aleks_default    
     30.11.15 
            ✎
    16:00 
 | 
         
        (27) Может попробуешь, для начала? А то все как, да как...     
         | 
|||
| 
    31
    
        salvator    
     30.11.15 
            ✎
    16:00 
 | 
         
        +(28) Только если у тебя имя колонки в формате дд.мм.гггг, то писать надо что-то типа для каждой строки
 
        Для каждого Колонка из ТабличнаяЧасть.Колонки цикл ДатаРС = Дата(СокрЛП(Колонка.Имя)+" 0:00:00"); КонецЦикла;  | 
|||
| 
    32
    
        Nuobu    
     30.11.15 
            ✎
    16:02 
 | 
         
        (31) Ты представляешь имя колонки в таком формате?     
         | 
|||
| 
    33
    
        Мимохожий Однако    
     30.11.15 
            ✎
    16:06 
 | 
         
        (27)И всё-таки...Напиши структуру регистра.     
         | 
|||
| 
    34
    
        Яна93    
     30.11.15 
            ✎
    16:11 
 | 
||||
| 
    35
    
        Nuobu    
     30.11.15 
            ✎
    16:15 
 | 
         
        (34) Меня смущает ДатаПотребности.     
         | 
|||
| 
    36
    
        Яна93    
     30.11.15 
            ✎
    16:18 
 | 
         
        (35) Это и есть дата колонки     
         | 
|||
| 
    37
    
        Мимохожий Однако    
     30.11.15 
            ✎
    16:27 
 | 
         
        (34)Это "я сама"? )) Нет слов.     
         | 
|||
| 
    38
    
        Яна93    
     30.11.15 
            ✎
    16:29 
 | 
         
        (37) Что не так?     
         | 
|||
| 
    39
    
        ejikbeznojek    
     30.11.15 
            ✎
    16:37 
 | 
         
        (38)
 
        Может лучше было бы оставить одну колонку "День" И писать набор строк в этой ТЧ с разными цифрами в этой колонке?  | 
|||
| 
    40
    
        Nuobu    
     30.11.15 
            ✎
    16:40 
 | 
         
        (36) Может, Период, это дата колонки?     
         | 
|||
| 
    41
    
        Яна93    
     30.11.15 
            ✎
    16:45 
 | 
         
        (40) Нет...период будет начало месяца проставлено..     
         | 
|||
| 
    42
    
        D_E_S_131    
     30.11.15 
            ✎
    16:50 
 | 
         
        (41) А смысл?     
         | 
|||
| 
    43
    
        Яна93    
     30.11.15 
            ✎
    16:50 
 | 
         
        (39) Может и так оставлю..еще не определилась...зависит от того как будет проще реализовать.. пока все на стадии реализации)     
         | 
|||
| 
    44
    
        ejikbeznojek    
     30.11.15 
            ✎
    16:51 
 | 
         
        (43) 
 
        тогда одной строке ТЧ, будет соответствовать одна запись в регистре.  | 
|||
| 
    45
    
        D_E_S_131    
     30.11.15 
            ✎
    16:52 
 | 
         
        + (44) и можно будет движения конструктором написать. :)     
         | 
|||
| 
    46
    
        Яна93    
     30.11.15 
            ✎
    16:54 
 | 
         
        (44) А, не так поняла..я подумала про наименование День 1 либо полная дата в наименовании колонки...нет..каждый день в новой колонке будет... (45) я бы только рада была упростить себе жизнь)     
         | 
|||
| 
    47
    
        D_E_S_131    
     30.11.15 
            ✎
    16:58 
 | 
         
        (46) В документе будет ТЧ с з-мя колонками: Номенклатура, ДатаПотребности, Количество.
 
        В шапке документа сделаешь реквизит МесяцПотребности (если уж так надо Период в движениях ставить на начало месяца). В форме документа можно сделать 2 ТЗ - в одной например отобразить номенклатуру и общее кол-во потребности в этом месяце, а в другой отобразить детализацию потребностей по дням. При открытии документа программно все это "отрисовывать".  | 
|||
| 
    48
    
        Яна93    
     07.12.15 
            ✎
    09:05 
 | 
         
        Еще раз всем привет) Знаю, будете ругаться, но я пока не реализовала свой замысел касаемо записи движений в регистре накопления.. Пока возникла проблема с заполнением табличной части документа.. :) Я запросом получаю все необходимое: Номенклатуру, ее характеристику и единицу измерения, Количество и дату.. Каким образом сделать обход по результату запроса так чтобы значения встали на свои места? Я имею ввиду дата попала в заголовок колонки а номенклатура и количество в соответствующие этой дате ячейки строки...
 
        Тип у колонок Дата число..так как там будет вносится Количество... Ни где в интернете нет подобного примера.. Номенклатура | Характеристика | ЕдИзм | Дата1 | Дата2 .. | ДатаN  | 
|||
| 
    49
    
        aleks_default    
     07.12.15 
            ✎
    09:13 
 | 
         
        (48)Ну делаешь обход по ТЧ построчно, а внутри цикл как в (2). Что сложного?     
         | 
|||
| 
    50
    
        Яна93    
     07.12.15 
            ✎
    09:23 
 | 
         
        (49) Имеешь ввиду обход по результату запроса? В простом варианте я бы записала вот так:
 
        Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Новая = ТЧ.Добавить(); ЗаполнитьЗначенияСвойств(Новая, Выборка); КонецЦикла; Но у меня Дату надо в наименование колонки записать..а количество под этой датой.. Я даже представить себе не могу как это записать..  | 
|||
| 
    51
    
        Яна93    
     07.12.15 
            ✎
    09:49 
 | 
         
        Наверное стоит написать эту задачу в новой ветке? Т.к. все продолжают думать, что мне нужно реализовать движение по регистру накоплений..а у меня совсем другая проблема - (48)     
         | 
|||
| 
    52
    
        aleks_default    
     07.12.15 
            ✎
    10:05 
 | 
         
        (50) Зависит от того  какая у тебя структура результата запроса.     
         | 
|||
| 
    53
    
        Яна93    
     07.12.15 
            ✎
    10:10 
 | 
         
        (52) Ну вот итоговая часть запроса, в результате я получаю Номенклатуру, Характер.,ЕдИзм, Количество, Дату
 
        ВЫБРАТЬ ВТ.Номенклатура, ВТ.ХарактеристикаНоменклатуры, СУММА(ВТ.Количество) КАК Количество, ВТ.ЕдиницаИзмерения, ВТ.Дата КАК Дата ИЗ ВТ КАК ВТ ГДЕ ВТ.Количество <> 0 СГРУППИРОВАТЬ ПО ВТ.Номенклатура, ВТ.ХарактеристикаНоменклатуры, ВТ.ЕдиницаИзмерения, ВТ.Дата УПОРЯДОЧИТЬ ПО Дата  | 
|||
| 
    54
    
        Helldown    
     07.12.15 
            ✎
    10:13 
 | 
         
        Поддерживаю (39), (44), (45).
 
        Сделай нормальную табличную часть и "отрисуй" её как требуется.  | 
|||
| 
    55
    
        Яна93    
     07.12.15 
            ✎
    10:16 
 | 
         
        (54) Я так сперва и делала, но нужно сделать по другому.. как обрисовала (48)     
         | 
|||
| 
    56
    
        Helldown    
     07.12.15 
            ✎
    10:25 
 | 
         
        (55) Нужно сделать для чего? Для визуального представления в ТЧ документа?     
         | 
|||
| 
    57
    
        Яна93    
     07.12.15 
            ✎
    10:29 
 | 
         
        (56) Да, чтобы пользователь мог зайти в документ и визуально ему будет удобнее ориентироваться, заодно и номенклатура сгруппируется..одна номенклатура в одной строке и количество этой номенклатуры в этой же строке, но на разных датах..повторюсь, что даты будут в наименовании колонок.. Ни когда ни чего подобного не делала - поэтому и не знаю как реализовать     
         | 
|||
| 
    58
    
        aleks_default    
     07.12.15 
            ✎
    10:37 
 | 
         
        Добавь в запрос 
 
        ИТОГИ ПО Номенклатура, Характеристика,ЕдиницаИзмерения Выборка1 = Запрос.Выполнить().Выбрать (ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка1.Следующий() цикл Выборка2 = Выборка1 .Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка2.Следующий() цикл Выборка3 = Выборка2 .Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка3.Следующий() цикл Новая = ТЧ.Добавить(); ЗаполнитьЗначенияСвойств(Новая, Выборка3); Выборка = Выборка3.Выбрать() Пока Выборка.Следующий() Цикл НомерДня = ДеньВмесяце(Выборка.дата) Новая["День"+НомерДня] = Выборка.Количество; КонецЦикла; примерно так наверное есть ошибки, писал на скорую руку  | 
|||
| 
    59
    
        Яна93    
     07.12.15 
            ✎
    10:43 
 | 
         
        (58) Вот это дааа) Ни когда не видела подобного)) Огромное спасибо! Буду пробовать)     
         | 
|||
| 
    60
    
        aleks_default    
     07.12.15 
            ✎
    10:47 
 | 
         
        (59) Я сегодня добрый, с утра :)     
         | 
|||
| 
    61
    
        Яна93    
     07.12.15 
            ✎
    10:49 
 | 
         
        (58) И сразу вопрос.. как я поняла ЗаполнитьЗначенияСвойств(Новая, Выборка3); мы заполним Номенклатура, Характеристика,ЕдиницаИзмерения. А после мы для них находим нужное количество..а до этого нужно будет наименование колонки переименовать в дату которую мы получим из запроса? Или я снова туплю?)     
         | 
|||
| 
    62
    
        aleks_default    
     07.12.15 
            ✎
    10:56 
 | 
         
        (68) Если у тебя структура колонок Табл. части такая как  описано в (48), то ничего переименовывать не надо. 
 
        Я так понимаю что у теюя колонки "Дата1,Дата2,Дата3,... Дата31"?. Ну то есть 1 месяц?  | 
|||
| 
    63
    
        Яна93    
     07.12.15 
            ✎
    11:01 
 | 
         
        (62) Ну я просто хочу эти Дата1, Дата2 переименовать в дни которые получу из запроса Дата..чтобы в дальнейшем использовать эти даты для записи в регистр накопления как было в исходной задаче (0)     
         | 
|||
| 
    64
    
        aleks_default    
     07.12.15 
            ✎
    11:06 
 | 
         
        (63)Переименовать ИМЯ колонки у тебя не получится. Можно поменять только заголовок.     
         | 
|||
| 
    65
    
        hhhh    
     07.12.15 
            ✎
    11:08 
 | 
         
        (64) заголовок тоже нельзя.     
         | 
|||
| 
    66
    
        Яна93    
     07.12.15 
            ✎
    11:08 
 | 
         
        (64) получается функцию по замене заголовка я вставляю в цикл
 
        Пока Выборка.Следующий() Цикл {БлаБлаБла=ЗаменимЗаголовок} НомерДня = ДеньВмесяце(Выборка.дата) Новая["День"+НомерДня] = Выборка.Количество; КонецЦикла;  | 
|||
| 
    67
    
        Яна93    
     07.12.15 
            ✎
    11:09 
 | 
         
        (65) Как нельзя? Я вроде находила подобное..     
         | 
|||
| 
    68
    
        aleks_default    
     07.12.15 
            ✎
    11:12 
 | 
         
        ()Зачем? Тебе нужно один раз пройтись по колонкам и изменить заголовок, а не много раз при обходе выборки. 
 
        У тебя же на форме есть реквизит типа "Месяц"? Вот и сделай один цикл с обходом дней этого месяца.  | 
|||
| 
    69
    
        Яна93    
     07.12.15 
            ✎
    11:14 
 | 
         
        (68) Так вот говорят нельзя заменить заголовок - (65)     
         | 
|||
| 
    70
    
        aleks_default    
     07.12.15 
            ✎
    11:21 
 | 
         
        (69) В УФ можно.     
         | 
|||
| 
    71
    
        Яна93    
     07.12.15 
            ✎
    11:23 
 | 
         
        (70) У меня УФ :)     
         | 
|||
| 
    72
    
        aleks_default    
     07.12.15 
            ✎
    11:24 
 | 
         
        (70) + Про обычные уже не помню, но по-моему тоже можно было.     
         | 
|||
| 
    73
    
        aleks_default    
     07.12.15 
            ✎
    11:27 
 | 
         
        В общем, мне работать надо. 
 
        Тебе полезно будет посмотретьт как реализована форма табеля в любой типовой конфе.  | 
|||
| 
    74
    
        Яна93    
     07.12.15 
            ✎
    11:31 
 | 
         
        (73) Спасибо большое, Добрая душа! ;)     
         | 
|||
| 
    75
    
        Helldown    
     07.12.15 
            ✎
    12:56 
 | 
         
        (57) Для визуальной красоты не обязательно "уродовать" табличную часть объекта, достаточно лишь правильно визуально выводить в табличном поле то, что нужно.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |