Имя: Пароль:
1C
1С v8
выборка животных по возрастной группе
,
0 111serzh
 
22.07.16
16:40
Задача создать кнопку в документе ведомость взвешивания животных, при помощи которой производилась выборка животных подходящих выбранной возрастной группе в разделе учетная группа.  Вывод в табличную часть животных подходящих к выбранной учетной группе.
Учетные группы делятся на определенный период времени (по возрасту): бычки 0-2, бычки 2-6, бычки 6-12, телки  0-2,телки 2-6, телки 6-12.
В справочнике Интеко КРС группового учета создал реквизиты: пол животного, возраст с, возраст по.
В справочнике КА_скот создал реквизиты: пол животного,  дата рождения.
Опыта  работы в 1с практически нет.
Заранее спасибо.
1 Cyberhawk
 
22.07.16
16:43
"возраст с, возраст по" // Судя по диапазонам 0-2, 2-6 и т.д. надо не "по", а "до" (т.е. не включая вторую границу)
2 Garykom
 
гуру
22.07.16
16:45
Не проще сюда http://www.chernozemie-inteko.ru/products-of-inteco/USHP/ позвонить/написать?
3 Jokero
 
22.07.16
16:47
Вот эти диапазоны групп по возрасту будешь в отчете настраивать. В справочнике тебе нужна только одна цифра - возраст.
4 Jokero
 
22.07.16
16:49
(3) + ну естессно, не возраст, а дата рождения)
5 Garykom
 
гуру
22.07.16
16:50
(3) Моя как бы не в курсе предметки с/х и животноводства, но вес и возраст это величины не постоянные ))

Ладно еще возраст можно через дату рождения, но вес это же периодика.
6 Garykom
 
гуру
22.07.16
16:51
(4) Там особенность что похожих причесывают под одну гребенку и пишут бычки 0-2 - стока то штук.

Отдельно каждого взвешивать/учитывать нафик нуна. По сути групповой учет идет.
7 jsmith
 
22.07.16
16:54
Как вариант

// Документ имеет реквизит РазделУчета

Процедура ЗаполнитьСкот()

Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("ВозрастС", Объект.РазделУчета.ВозрастС);
Запрос.УстановитьПараметр("ВозрастПо", Объект.РазделУчета.ВозрастПо);
ВЫБРАТЬ
КА_Скот.Ссылка КАК Скот
ИЗ
Справочник КА_Скот КАК КА_Скот
ГДЕ
РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, Дата, ГОД) >= &ВозрастС
И РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, Дата, ГОД) <= &ВозрастПо";

ТЗ = Запрос.Выполнить().Выгрузить();
Объект.ТабличнаяЧасть.Загрузить(ТЗ);
Для Каждого Стр Из Объект.ТабличнаяЧасть Цикл
// код заполнения строки табличной части
КонецЦикла;

КонецПроцедуры
8 111serzh
 
22.07.16
16:54
Если честно не понимаю практически не чего! Но хочу разобраться. Справочники  Интеко КРС группового учета, КА_Скот несут в себе информацию по определенной корове или бычку. Нужно при выборе учетной группе в документе ведомость взвешивания животных создать отбор.
9 jsmith
 
22.07.16
16:55
Запрос.Текст =
10 111serzh
 
22.07.16
17:01
Создал кнопку (заполнить по учетной группе). Которая должна работать при выборе определенной учетной группе. При нажатие должна выдавать тех бычков которые подходят по возрасту. Из за этого и создал реквизит дата роздения
11 111serzh
 
22.07.16
17:11
Добавил реквизит РазделУчета. Выдает ошибку

{Документ.КА_ВедомостьВзвешиванияЖивотных.Форма.ФормаДокумента.Форма(72,1)}: Неопознанный оператор
<<?>>КА_Скот.Ссылка КАК Скот (Проверка: Толстый клиент (обычное приложение))
12 hhhh
 
22.07.16
17:32
запятую забыл поставить
13 Горогуля
 
22.07.16
17:33
(12) тупо скопипастил, не думая
14 111serzh
 
25.07.16
09:53
Ребята подскажите не могу разобраться. Заранее спасибо.
15 Молочный брат
 
25.07.16
10:00
Там же в поставке есть демопример. По нему и смотри
16 Молочный брат
 
25.07.16
10:10
Зачем вообще что-то писать в конфе. Там все написано без тебя. Нужно просто прочитать доку и работать
17 111serzh
 
25.07.16
10:29
Не могу понять. Незнаю как сделать.....
18 Горогуля
 
25.07.16
10:31
засылай денег, часов через 20 получишь готовое
19 DDwe
 
25.07.16
10:31
(17) Если опыта нет, зачем полез?
22 jsmith
 
25.07.16
10:33
Третий или какой день пилишь какую-то шнягу. Шарил бы в кодинге, давно бы сделал. Прочитай Радченко для начала.
24 Молочный брат
 
25.07.16
10:40
В Интеко писать противопоказано. Тем более, что этот функционал есть в системе
25 111serzh
 
25.07.16
10:45
Я сам пытаюсь. Нахожусь далеко от города. Возможности обратиться за помощью к программисту нет. Подумал в вашем форуме помогут, ну ладно сам разберусь. Извинить что занял ваше время.
26 Молочный брат
 
25.07.16
10:54
(25) Уважаемый, причем здесь программист? В твоем случае нужен консультант(внедренец) со знанием конфы и предметной области. Ты бы для начала почитал как учитывают животных в СХ.
28 111serzh
 
25.07.16
12:25
Создал вот такой код.  


Процедура ЗаполнитьПоУчетнойГруппеЗаполнитьПоУчетнойГруппе(Кнопка)
    
    Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("ВозрастС", СтатусКРС.ВозрастС);
Запрос.УстановитьПараметр("ВозрастПо", СтатусКРС.ВозрастПо);
Запрос.Текст = "ВЫБРАТЬ
|КА_Скот.Ссылка КАК Скот
|ИЗ
|Справочник КА_Скот КАК КА_Скот
|ГДЕ
|РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, Дата, МЕСЯЦ) >= &ВозрастС
|И РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, Дата, МЕСЯЦ) < &ВозрастПо";
Результат=Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
ТЗ = Запрос.Выполнить().Выгрузить();
ТабличнаяЧасть=ТабличнаяЧасть.Загрузить(ТЗ);
Для Каждого Стр Из ТабличнаяЧасть Цикл
    

КонецЦикла;
                            
                                
                       КонецПроцедуры
29 DDwe
 
25.07.16
12:31
(28) И?
30 111serzh
 
25.07.16
12:33
Пишет что синтаксическая ошибка КАК.
это из за того что не в конструкторе собрал?
31 Горогуля
 
25.07.16
12:33
а что, правда, на каждую скотину свой элемент справочника заводится?
32 Горогуля
 
25.07.16
12:34
(30) ну собери конструктором
33 111serzh
 
25.07.16
12:34
Да. С ее общими данными.
34 Горогуля
 
25.07.16
12:36
ладно коровы, но есть же лягушки с икрой (реально, видел такую базу). так там ушлые продавщички икру ложками тырили и налево гнали. кто её считать будет?
35 111serzh
 
25.07.16
12:49
Интересная задачка
36 111serzh
 
25.07.16
13:04
Сделал в конструкторе
Процедура ЗаполнитьПоУчетнойГруппеЗаполнитьПоУчетнойГруппе(Кнопка)
    
    Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());
Запрос.УстановитьПараметр("ВозрастС", СтатусКРС.ВозрастС);
Запрос.УстановитьПараметр("ВозрастПо", СтатусКРС.ВозрастПо);
Запрос.Текст = "ВЫБРАТЬ
               |    КА_Скот.Ссылка
               |ИЗ
               |    Справочник.КА_Скот КАК КА_Скот
               |ГДЕ
               |    РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, &ДатаДокумента, МЕСЯЦ) >= &ВозрастС
               |    И РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, &ДатаДокумента, МЕСЯЦ) < &ВозрастПо";


Результат=Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
ТЗ = Запрос.Выполнить().Выгрузить();
ТабличнаяЧасть=ТабличнаяЧасть.Загрузить(ТЗ);
Для Каждого Стр Из ТабличнаяЧасть Цикл
    

КонецЦикла;


Поругался
{Документ.КА_ВедомостьВзвешиванияЖивотных.Форма.ФормаДокумента.Форма(52)}: Значение не является значением объектного типа (Загрузить)
ТабличнаяЧасть=ТабличнаяЧасть.Загрузить(ТЗ);
37 hhhh
 
25.07.16
13:17
значит у вас фигня какая-то находится в ТАбличнаяЧасть. отладчиком посмотрите.

и зачем вы в ТабличнаяЧасть записываете ТабличнаяЧасть.Загрузить(ТЗ)  ??
38 Молочный брат
 
25.07.16
13:23
Специально для дятлов поясняю, что в половозрастной группе, например, от 0 до 6 мес. могут быть животные, которым больше 6 мес..
Тук тук
39 111serzh
 
25.07.16
13:40
Нет такой группы есть от 0-2 и 2-6
40 111serzh
 
25.07.16
13:45
Результат=Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
ТЗ = Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из ТЗ Цикл
ТаблицаВзвешивание = Взвешивание.Выгрузить();    
КонецЦикла;
КонецПроцедуры
правильно сделал что бы выгружались подходящие позиции?
41 jsmith
 
25.07.16
13:49
Ты тупишь. Ты хотя бы представления о программировании имеешь?

Для УФ
ИмяТабЧасти = "Скот";
Объект[ИмяТабЧасти].Загрузить(Запрос.Выполнить().Выгрузить());

Для ОФ
ИмяТабЧасти = "Скот";
ЭтотОбъект[ИмяТабЧасти].Загрузить(Запрос.Выполнить().Выгрузить());
42 Fish
 
25.07.16
13:49
(40) Зачем 2 раза запрос выполнять и выгружать?
43 jsmith
 
25.07.16
13:52
(42) >>чтобы выгружались подходящие позиции
44 Fish
 
25.07.16
13:54
(43) Блин, а там ещё и в цикле есть Взвешивание.Выгрузить(); :)))
45 111serzh
 
25.07.16
14:31
Ребята подскажите вот у меня есть таблица взвешивание в ней поля: скот,масса,массаПред,привес.
как сделать что бы добавлялось новая строка по моему запросу?

Для Каждого Стр Из ТЗ Цикл
     Стр = ТЗ.Добавить();
    
     ??????

     КонецЦикла;
46 DDwe
 
25.07.16
14:45
(45) Толсто, очень.
47 111serzh
 
25.07.16
15:20
Результат=Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
ТЗ = Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из ТЗ Цикл
     НоваяСтр = Взвешивание.Добавить();
     НоваяСтр.Скот=Справочник.КА_Скот.Ссылка();
    


НЕ ЧЕГО НЕ ДАЕТ ПУСТЫЕ СТРОКИ ТОЛЬКО
48 Молочный брат
 
25.07.16
15:20
(39) Я к примеру, умник. Для КРС такие группы могут быть А у вас свиньи скорее всего.
49 jsmith
 
25.07.16
15:25
(47) О ёмана, о ёмана

Результат = Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
Для Каждого Стр Из ТЗ Цикл
     НоваяСтр = Взвешивание.Добавить();
     НоваяСтр.Скот = Стр.Скот;
     //...
КонецЦикла;
50 111serzh
 
25.07.16
15:48
Спасибо большое....
51 111serzh
 
25.07.16
16:52
Вот сделал, все работает.
Процедура ЗаполнитьПоУчетнойГруппеЗаполнитьПоУчетнойГруппе(Кнопка)
    
    Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());
Запрос.УстановитьПараметр("ВозрастС", СтатусКРС.ВозрастС);
Запрос.УстановитьПараметр("ВозрастПо", СтатусКРС.ВозрастПо);
Запрос.УстановитьПараметр("ПолЖивотного", СтатусКРС.ПолЖивотного);

Запрос.Текст = "ВЫБРАТЬ
               |    КА_Скот.Ссылка
               |ИЗ
               |    Справочник.КА_Скот КАК КА_Скот
               |ГДЕ
               |    РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, &ДатаДокумента, МЕСЯЦ) >= &ВозрастС
               |    И РАЗНОСТЬДАТ(КА_Скот.ДатаРождения, &ДатаДокумента, МЕСЯЦ) < &ВозрастПо
               |    И КА_Скот.ПолЖивотного = &ПолЖивотного";



Результат=Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
ТЗ = Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из ТЗ Цикл
     НоваяСтр = Взвешивание.Добавить();
     НоваяСтр.Скот=Стр.Ссылка;
    
КонецЦикла;
    ПерезаполнитьПредыдущийВесИПривесы();

КонецПроцедуры


  Подскажите как сделать что бы происходила очистка предыдущего результата при выборе другой учетной группе.
52 jsmith
 
25.07.16
17:13
...
Взвешивание.Очистить();
Для Каждого Стр Из ТЗ Цикл
...
53 111serzh
 
25.07.16
17:22
не получается,чистит всю таблицу
54 111serzh
 
26.07.16
12:28
Подскажите как можно сделать очистку табличной части после выполнения запроса. При выборе нового запроса? Заранее спасибо..
55 Fish
 
26.07.16
13:04
(54) ТабличнаяЧасть.Очистить();
56 111serzh
 
26.07.16
13:15
Спасибо большое...
Все получилось.
57 111serzh
 
26.07.16
16:09
Подскажите, если возможно показать пример по работе в ведомости взвешивания животных создал кнопку "ввести привес". которая выполняет действие ввода пользователем определенного числа привеса и он должен разнисти этот привес по всем позициям. Заранее спасибо.
58 111serzh
 
26.07.16
16:13
Процедуру создал  ПерезаполнитьПредыдущийВесИПривесы();
она работает
59 jsmith
 
26.07.16
16:18
Привес = 0;
    Если ВвестиДату(Привес, "Введите привес", 15, 3) Тогда
        ПривесСтроки = Привес / Объект.ТабличнаяЧасть.Количество();
        Для Каждого Строка Из Объект.ТабличнаяЧасть Цикл        
            Строка.Привес = ПривесСтроки;                
        КонецЦикла;                
    КонецЕсли;
60 jsmith
 
26.07.16
16:18
Ой. ВвестиЧисло
61 111serzh
 
26.07.16
16:27
Процедура ВвестиПривес(Кнопка)
     ПерезаполнитьПредыдущийВесИПривесы();
      Привес = 0;
    Если ВвестиЧисло(Привес, "Введите привес", 15, 3) Тогда
        ПривесСтр = Привес / Привес.ТЗ.Количество();
        Для Каждого Стр Из Привес.ТЗ Цикл        
            Стр.Привес = ПривесСтр;                
        КонецЦикла;                
    КонецЕсли;
    
     КонецПроцедуры
Ругается
{Документ.КА_ВедомостьВзвешиванияЖивотных.Форма.ФормаДокумента.Форма(73)}: Значение не является значением объектного типа (ТЗ)
        ПривесСтр = Привес / Привес.ТЗ.Количество();
62 jsmith
 
26.07.16
16:29
У меня щас рукалицо в кубе будет.
Как ты вот это
ПривесСтроки = Привес / Объект.ТабличнаяЧасть.Количество();
превратил в это
ПривесСтр = Привес / Привес.ТЗ.Количество();
Умный типа?
63 jsmith
 
26.07.16
16:30
Хотя бы так писал бы
ПривесСтр = Привес / ТЗ.Количество();

Как у тебя таб. часть наз-ся я хз
65 111serzh
 
26.07.16
17:59
Процедура ВвестиПривес(Кнопка)
    
          
        Взвешивание.Очистить();
         ПерезаполнитьПредыдущийВесИПривесы();
      Привес = 0;
    Если ВвестиЧисло(Привес, "Введите привес", 15, 3) Тогда
        ПривесСтр = Привес / Привес.Взвешивание.Количество();
        Для Каждого Стр Из Привес.Взвешивание Цикл        
            Стр.Привес = Взвешивание.ВыгрузитьКолонку(Привес);                
        КонецЦикла;                
    КонецЕсли;
    
      КонецПроцедуры
Ругается
{Документ.КА_ВедомостьВзвешиванияЖивотных.Форма.ФормаДокумента.Форма(76)}: Значение не является значением объектного типа (Взвешивание)
        ПривесСтр = Привес / Привес.Взвешивание.Количество();
66 111serzh
 
27.07.16
10:20
Добрый день не могу разобраться, подскажите
Процедура ВвестиПривес(Кнопка)
                      Привес = 0;
    Если ВвестиЧисло(Привес, "Введите привес", 15, 3) Тогда
       ПривесСтроки = Привес / Привес.Взвешивание.Количество();
        Для Каждого Строка Из Привес.Взвешивание Цикл        
            Строка.Привес = ПривесСтроки;                
        КонецЦикла;                
    КонецЕсли;
    ПерезаполнитьПредыдущийВесИПривесы();
      КонецПроцедуры

Ругается не понимаю....
{Документ.КА_ВедомостьВзвешиванияЖивотных.Форма.ФормаДокумента.Форма(72)}: Значение не является значением объектного типа (Взвешивание)
       ПривесСтроки = Привес / Привес.Взвешивание.Количество();
67 DDwe
 
27.07.16
10:36
(66) "Привес" это у тебя что?
68 DDwe
 
27.07.16
10:38
Будешь молчать как партизан?
69 111serzh
 
27.07.16
10:40
Строка в Взвешивание
70 DDwe
 
27.07.16
10:42
(69) Строка в Взвешивании это видимо "Привес.Взвешивание" это.
А просто "Привес" что такое?
71 DDwe
 
27.07.16
10:43
Вот в этом "Привес = 0;  ....... Привес.Взвешивание.Количество();"
Тебя ничего не смущает?
72 DDwe
 
27.07.16
10:44
И отсюда "Строка.Привес = ПривесСтроки;" убери слово "строка".
73 DDwe
 
27.07.16
10:44
(72) Равно как и выше тоже.
74 111serzh
 
28.07.16
15:27
Процедура ВвестиПривес(Кнопка)
           ПерезаполнитьПредыдущийВесИПривесы();

         Запрос = Новый Запрос();
         Запрос.Текст = "ВЫБРАТЬ
                        |    КА_МассаСкота.Скот
                        |ИЗ
                        |    РегистрСведений.КА_МассаСкота КАК КА_МассаСкота";
        
        
     Привес=Взвешивание.ВыгрузитьКолонки("Привес");
         Запрос.УстановитьПараметр("Привес", Привес);
        ТабВзвешивания = Запрос.Выполнить().Выгрузить();
        Дельта = Null;    
                 Если ВвестиЧисло(Дельта, "Введите привес", 15, 3) Тогда
                Для Каждого Строка Из Взвешивание Цикл        
                
              ПривесСтроки =Дельта + Строка.Привес;  
                                                          //Строка привес, полученное зна                                                                                              
                 Строка.Привес = ПривесСтроки;
                Строка.МассаПред =            ;         // Строка масса пред дает значение из Регистра сведений.КА_МассаСкот = 550. И автаматом ставит в привесе -550. Как прописать что бы был Привес = 0.        

                       Строка.Масса = Строка.МассаПред + ПривесСтроки;
                 КонецЦикла;  
                
               КонецЕсли;
          КонецПроцедуры
75 111serzh
 
28.07.16
15:33
Все не нужно у меня получилось
Процедура ВвестиПривес(Кнопка)
           ПерезаполнитьПредыдущийВесИПривесы();

         Запрос = Новый Запрос();
         Запрос.Текст = "ВЫБРАТЬ
                        |    КА_МассаСкота.Скот
                        |ИЗ
                        |    РегистрСведений.КА_МассаСкота КАК КА_МассаСкота";
        
        
     Привес=Взвешивание.ВыгрузитьКолонки("Привес");
         Запрос.УстановитьПараметр("Привес", Привес);
        ТабВзвешивания = Запрос.Выполнить().Выгрузить();
        ПривесСтроки = 0;    
                 Если ВвестиЧисло(ПривесСтроки, "Введите привес", 15, 3) Тогда
                Для Каждого Строка Из Взвешивание Цикл        
                
                
                                                                                                                                                  
                 Строка.Привес = ПривесСтроки;
                
                       Строка.Масса = Строка.МассаПред + ПривесСтроки;
                 КонецЦикла;  
                
               КонецЕсли;
          КонецПроцедуры
76 111serzh
 
28.07.16
16:09
кнопка установить привес
вводится число и делится на все строки тз поровну.
Процедура РаспределитьПривес(Кнопка)
        ЗапросПривес = Новый Запрос();    
          ЗапросПривес.Текст = "ВЫБРАТЬ
                               |    КА_МассаСкота.Масса
                               |ИЗ
                               |    РегистрСведений.КА_МассаСкота КАК КА_МассаСкота";
         Привес=Взвешивание.ВыгрузитьКолонки("Привес");                      
          ЗапросПривес.УстановитьПараметр("Привес", Привес);
          ТабВзвешивания = ЗапросПривес.Выполнить().Выгрузить();
            ПривесСтр = 0;
            Если ВвестиЧисло (ПривесСтр, "Введите привес", 15, 2) Тогда
                Для Каждого Строка Из Взвешивание Цикл
                    Строка.Привес = ПривесСтр / Строка.Привес;     //как правильно прописать что бы  число поделилось на равные части и разнеслось по всем стр Привес
                    Строка.Масса = Строка.МассаПред + ПривесСтр;
                КонецЦикла;
            КонецЕсли;
    КонецПроцедуры
77 111serzh
 
28.07.16
16:10
Подскажите, заранее спасибо
78 DDwe
 
28.07.16
16:16
(77) Не, ну так нельзя тролить...

Вот почему прежде чем начинать писать, не получить хотя бы базовое профильное образование?
И выброси этот бред из (76)
79 111serzh
 
28.07.16
16:19
Не понял, поясните.
80 DDwe
 
28.07.16
16:22
(79) Какие слова тебе не понятны?
81 111serzh
 
28.07.16
16:26
Как нужно сделать что бы делился результат запроса и разносился по всем строкам привес?
82 DDwe
 
28.07.16
16:30
(81) Нужно сесть, взять себя в руки и написать, что бы привес разносился.
83 111serzh
 
28.07.16
16:34
Он разносится только не делится.Ладно разберусь. Спасибо
84 111serzh
 
28.07.16
17:10
Подскажите форму деления числа на количество строк
85 DDwe
 
29.07.16
03:59
(84) Что простите?
86 111serzh
 
29.07.16
09:20
У меня задача, введенного число произвести деление на общее количество строк.
87 Mankubus
 
29.07.16
09:23
(86) формула: ВведенноеЧисло/КоличествоСтрок
88 DDwe
 
29.07.16
09:25
(87) +100 ))))
89 Горогуля
 
29.07.16
09:32
(87) _общее_ количество строк. без общего не взлетит
90 Vladal
 
29.07.16
09:37
(87) (88) Может там надо распределить введенное число на количество строк со значимыми значениями или выборочно не по всей таблице....
91 Vladal
 
29.07.16
09:38
Недавно интересовался этой темой. Несколько интересных публикаций:
v8: Распределение сумм в запросе пропорционально результатам выборки
http://catalog.mista.ru/public/16630/
92 111serzh
 
29.07.16
09:39
Можете подсказать как она выглядит? Написать пример
93 DDwe
 
29.07.16
09:45
(92) Кто она?
94 Vladal
 
29.07.16
09:47
// Функция выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами распределения
//
// Параметры:
//        ИсхСумма - распределяемая сумма
//        МассивКоэф - массив коэффициентов распределения
//        Точность - точность округления при распределении. Необязателен.
//
//    Возврат:
//        МассивСумм - массив размерностью равный массиву коэффициентов, содержит
//            суммы в соответствии с весом коэффициента (из массива коэффициентов)
//          В случае если распределить не удалось (сумма = 0, кол-во коэф. = 0,
//          или суммарный вес коэф. = 0), тогда возвращается значение Неопределено
//
Функция РаспределитьПропорционально(Знач ИсхСумма, МассивКоэф, Знач Точность = 2) Экспорт
    
    Если МассивКоэф.Количество() = 0 Или ИсхСумма = 0 Или ИсхСумма = Null Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    ИндексМакс = 0;
    МаксЗнач   = 0;
    РаспрСумма = 0;
    СуммаКоэф  = 0;
    
    Для К = 0 По МассивКоэф.Количество() - 1 Цикл
        
        МодульЧисла = ?(МассивКоэф[К] > 0, МассивКоэф[К], - МассивКоэф[К]);
        
        Если МаксЗнач < МодульЧисла Тогда
            МаксЗнач = МодульЧисла;
            ИндексМакс = К;
        КонецЕсли;
        
        СуммаКоэф = СуммаКоэф + МассивКоэф[К];
        
    КонецЦикла;
    
    Если СуммаКоэф = 0 Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    МассивСумм = Новый Массив(МассивКоэф.Количество());
    
    Для К = 0 По МассивКоэф.Количество() - 1 Цикл
        МассивСумм[К] = Окр(ИсхСумма * МассивКоэф[К] / СуммаКоэф, Точность, 1);
        РаспрСумма = РаспрСумма + МассивСумм[К];
    КонецЦикла;
    
    // Погрешности округления отнесем на коэффиецент с максимальным весом
    Если Не РаспрСумма = ИсхСумма Тогда
        МассивСумм[ИндексМакс] = МассивСумм[ИндексМакс] + ИсхСумма - РаспрСумма;
    КонецЕсли;
    
    Возврат МассивСумм;
    
КонецФункции
96 111serzh
 
29.07.16
09:53
Процедура РаспределитьПривес(Кнопка)
        ЗапросПривес = Новый Запрос();    
          ЗапросПривес.Текст = "ВЫБРАТЬ
                               |    КА_МассаСкота.Масса
                               |ИЗ
                               |    РегистрСведений.КА_МассаСкота КАК КА_МассаСкота";
         Привес=Взвешивание.ВыгрузитьКолонки("Привес");                      
          ЗапросПривес.УстановитьПараметр("Привес", Привес);
          ТабВзвешивания = ЗапросПривес.Выполнить().Выгрузить();
            ПривесСтр = 0;
            Если ВвестиЧисло (ПривесСтр, "Введите привес", 15, 2) Тогда
                Для Каждого Строка Из Взвешивание Цикл
                    Строка.Привес = ПривесСтр / КоличествоСтрок;    ///? как правильно прописать эту строку
                    Строка.Масса = Строка.МассаПред + Строка.Привес;
                КонецЦикла;
            КонецЕсли;
    КонецПроцедуры
97 Mankubus
 
29.07.16
09:54
(96) Количество строк это Взвешивание.Количество()
Для распределения используй процедуру (94)
98 Mankubus
 
29.07.16
09:55
Для Каждого Строка Из Взвешивание Цикл
                    Строка.Привес = ПривесСтр / КоличествоСтрок;    ///? как правильно прописать эту строку

                    Строка.Масса = Строка.МассаПред + Строка.Привес;
                КонецЦикла;

это выброси
99 Vladal
 
29.07.16
09:57
В типовых есть функция ОбщегоНазначения.ОкруглитьСУчетомПогрешности
Переменная в третьем параметре как раз и хранит накопленную погрешность.
Пример:

Перем Погрешность;
Цикл
...
    Сумма = ОбщегоНазначения.ОкруглитьСУчетомПогрешности(Сумма, 2, Погрешность);
...
КонецЦикла;
100 111serzh
 
29.07.16
10:00
Мне нужно что бы при нажатие кнопки пользователь внес число к примеру 100 и одно поделилось на кол. строк Привес и результат деления разнесся по всем строка привеса
К примеру 500/ 10 строк = 50 в каждую строку
101 111serzh
 
29.07.16
10:01
Не пойму не как. В интернете нет не чего.
102 DDwe
 
29.07.16
10:06
Да, он издевается над вами... нельзя быть таким ))
103 Fish
 
29.07.16
10:10
Пятничная ветка подошла к своей второй пятнице?
104 DDwe
 
29.07.16
10:12
(103) До осени дотянет?
105 Fish
 
29.07.16
10:16
(104) По осени наверное стадо прирежут и проблема решится сама собой :)
106 111serzh
 
29.07.16
14:54
Подскажите как в запросе ДатуСмерти сравнить с концом периода?
107 Горогуля
 
29.07.16
15:11
(106) ДатаСмерти=КонецПериода(...)
108 111serzh
 
29.07.16
15:18
|    И РАЗНОСТЬДАТ(КА_Скот.ДатаСмерти, &ДатаДокумента, ГОД) = &ВозрастПо";
109 111serzh
 
10.08.16
13:06
Добрый день
Как сделать что бы в колонке "номер бирки" документа "приплод"создался номер, от последнего номера из справочника "скот" название колонки"код".
Что бы не было повтора.
110 Горогуля
 
10.08.16
13:09
(109) найти максимум, добавить единицу
111 111serzh
 
10.08.16
13:10
Как это прописать?
112 Fish
 
10.08.16
13:11
(111) Номер = Максимальныйномер + 1.
113 111serzh
 
10.08.16
13:15
Как 1С вычисляет МАКСИМУМ по ссылочному полю?
Нужно брать последнее значение из справочник скот. и добавлять 1 и записывать в документе приплод в номер бирки.
114 Fish
 
10.08.16
13:16
(113) Ты хочешь прибавить 1 к ссылке? И что ты ожидаешь получить в результате?
115 Горогуля
 
10.08.16
13:16
(113) а что такое последнее значение из справочник скот?
116 Горогуля
 
10.08.16
13:17
(114) он хочет номер от последнего. а максимум+1 - это уже наша самодеятельность ;)
117 111serzh
 
10.08.16
13:20
В справочнике скот есть реквизит КОД в котором записан номер коровы нужно что бы от последнего номера коровы создался новый номер +1 в документе ПРИПЛОД в НОМЕР БИРКИ
118 Fish
 
10.08.16
13:21
(117) Ну так и выбирай максимальный номер, и прибавляй к нему единицу. При чём здесь " МАКСИМУМ по ссылочному полю"?
119 Горогуля
 
10.08.16
13:24
(117) давай по шагам.
1. от последнего номера коровы - где его брать?
2. создался новый номер +1 - как добавить единичку?
3. документе ПРИПЛОД в НОМЕР БИРКИ - почему в документе?
120 111serzh
 
10.08.16
13:48
1 Справочник Скот реквизит Код. в нем хранятся номера коров.
2 Последний номер (Код)  0212. тогда 0212+1 и в документе приплод получить номер бирки = 0213.
121 Горогуля
 
10.08.16
13:50
отлично. как найти максимум коровы?
122 Горогуля
 
10.08.16
13:50
0212 - похоже на строку. как потом добавлять единицу?
123 111serzh
 
10.08.16
13:56
Нам не нужны сами данные коровы, нужен только номер.
Затея в чем создается кнопка(ДобавитьЭлементыСправочника) в Приплод, которая выполняет действие во всех строках созданых пользователем при нажатие на кнопку она создает номер коровы для каждой строки Номер бирки. Должна происходить проверка на повтор значения с справочником Скот в реквизите Код.
124 111serzh
 
10.08.16
13:57
Процедура ДобавитьЭлементыСправочника(Кнопка)
            ТабличнаяЧасть = Приплод;
            Запрос = Новый Запрос;
            Запрос.УстановитьПараметр("Код", Ссылка);
        Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());
              
  
                  Запрос.УстановитьПараметр("Ссылка", Ссылка);
                       Запрос.Текст =    "ВЫБРАТЬ
                                         |    КА_Скот.Код,
                                         |    КА_ПриплодПриплод.НомерБирки
                                         |ИЗ
                                         |    Документ.КА_Приплод.Приплод КАК КА_ПриплодПриплод
                                         |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КА_Скот КАК КА_Скот
                                         |        ПО КА_ПриплодПриплод.Скот = КА_Скот.Ссылка
                                         |
                                         |СГРУППИРОВАТЬ ПО
                                         |    КА_Скот.Код,
                                         |    КА_ПриплодПриплод.НомерБирки";                                                                             
                 
      РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Вот пробовал....
125 Горогуля
 
10.08.16
13:58
номер коровы не является данными коровы?
126 Горогуля
 
10.08.16
13:59
всё печальней. кстати, чем код элемента справочника не устраивает к качестве номера коровы?
127 111serzh
 
10.08.16
14:00
Я неправильно выразился простите. Является каждой корове присвоен свой  личный номер.
128 Горогуля
 
10.08.16
14:01
(127) предлагаю называть код элемента номером коровы и расходиться
129 111serzh
 
10.08.16
14:03
Нужно что бы от последнего номера коровы (Код) из справочник скот  прибавлялся 1 и помещался в номер бирки
130 Горогуля
 
10.08.16
14:04
предлагаю заменить надпись "код" надписью "номер бирки"
131 111serzh
 
10.08.16
14:12
Как это сделать?
132 Горогуля
 
10.08.16
14:14
133 DDwe
 
10.08.16
14:20
Это всё конечно смешно, в некотором роде. Но непонятно, почему такие люди не в дет.саду на кошках тренируются, а автоматизируют предприятия.
134 Горогуля
 
10.08.16
14:22
(133) думаешь, на кошках проще? кошкам тоже нужен номер бирки
135 111serzh
 
10.08.16
14:32
Ситуацию поясню, я сейчас как стажер в отделе программистов. Мне ставят задачи я пытаюсь выполнять в учебной базе. Ребята все умеют в 1с, просто я не спрашиваю. Решил у вас помощи попросить. Сами же такими были! А сейчас прикалываетесь. Конечно неловко перед вами, что спрашиваю такую ерунду. Но выхода не остается... Просто вспомните себя, какие вы были когда в следующий раз решите кого то унизить.
136 Горогуля
 
10.08.16
14:36
не убедил. чем код не устраивает?
137 DDwe
 
10.08.16
14:36
(135) Ну, у тебя же нет желания понять, как всё это работает. Понять цепочку взаимосвязей. Чтобы потом легко справляться самому, ты же спрашиваешь - как это сделать, для того, чтобы просто тупо скопировать и вперед к победе.
138 111serzh
 
10.08.16
14:38
Да нет, просто нужен пример. или подсказка направляющая. я не прошу процедуру сделать в отладчике. просто подсказать
139 Горогуля
 
10.08.16
14:39
(137) по-моему в этой ветке был прикол. человек тупо скопипастил текст запроса без палок (|) себе в код и делал круглые глаза
140 Горогуля
 
10.08.16
14:39
(138) передаю по буквам: не надо тебе этого
141 111serzh
 
10.08.16
14:40
Я думаю что правильно сделать взять последнее значение из код справочника скот и прибавить 1 к нему что бы избежать повтора.
142 Горогуля
 
10.08.16
14:40
+(140) бери код. платформа - она потом сама, даже если код строковый
143 Pentosh
 
10.08.16
14:41
(138) почитайте книгу
Радченко М.Г. 1С- Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы.
думаю у вас такое есть в отделе, а уж потом что-то делать пробуйте.
144 111serzh
 
10.08.16
14:43
Спасибо.
145 Горогуля
 
10.08.16
14:44
(141) поздравляю, так и есть. даже без твоего участия
146 Горогуля
 
10.08.16
14:46
а как-то была у меня необходимость своей нумерации. искал максимум, добавлял единицу...
147 111serzh
 
10.08.16
15:11
Получилось?
148 Горогуля
 
10.08.16
15:12
(147) канеш получилось. но уже никак не вспомню, чем нас код не устроил
149 Горогуля
 
10.08.16
15:13
(148) что-то связанное со своим форматом новых номеров дисконтных карт. не всегда сплошная нумерация
150 111serzh
 
10.08.16
15:37
Понял. Я не могу пока такими вещами хвастаться, тут с мелочью не могу разобраться....
151 Горогуля
 
10.08.16
15:40
мораль из (148). три половозрелых мужчины перед тем, как искать максимум и делать плюс один, доказывали сами себе, что такой велосипед нужен, и без него никак
152 111serzh
 
10.08.16
15:51
;)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.