arefaste/1C_Forums huggingface dataset:
УТ 11.0.7.19
У всех пользователей, кроме обладателей полных прав, нет кнопки "Печать" в документе "Счет". Вообще нет.
Надо сделать, чтобы была.
Конфигурация почти стандартная: внесено одно мелкое исправление в модуль документа "Реализация ТУ", изменены права на команду отчета "Анализ доступности". Закомментирован вызов процедуры "ПроверкаРелиза" (точно не помню название) при начале работы, т.к. такой процедуры в соответствующем общем модуле не найдено. Других исправлений нет.
Помогите, плз, кто чем может.
---
А если роли изменяли, надо проверить права доступа к обработке "ПечатьСчетовНаОплату" и к ее командам.
---
Проверьте доступность ролей "ЧтениеСчетовНаОплатуКлиентам" ИЛИ "ДобавлениеИзменениеСчетовНаОплатуКлиентам" у пользователей. Обработка печати счета и команда печати доступна только для этих ролей
---
KeO_ip, роли все поставили. Даже если в профиле группы доступа поставить ВСЕ галки, кнопка не появляется.
---
Проверьте настройку пользовательской видимости этой кнопки.
---
Dr.DragoN, ты видел форму счета в этой конфигурации? Там НЕТ этой кнопки. Она динамически добавляется. Что именно и где надо проверить?
---
starjevschik, проверил на демо базе 11.0.7.19, создал тестовую роль, прилагаю скриншоты настройки доступа и результат.
---
А если роли изменяли, надо проверить права доступа к обработке "ПечатьСчетовНаОплату" и к ее командам.
---
KeO_ip, у обработки ПечатьСчетовНаОплату права были только у ролей "Полные права" и "Партнеры самообслуживание".
Как это может быть, не представляю. Ставил штатное обновление...
Спасибо :)
---
Поробуй на форме списка перейти Все действия -> Изменить форму.Далее на форме настроек
Все действия -> Установить стандартные настройки.И далее применить.Кнопка печать скорее всего должна вернуться.
---
HeadHunter2007, нет, см. выше, все намного интереснее.
Добрые люди поскажите что делаю не так =)
 Таб.ВывестиСекцию("Подвал");
 Таб.Записать("Price",Число(ФорматВыгрузки));
 Таб.Показать();
Ну и соответсвтенно файла нет =) синтаксис помощник говорит в
метод может использоваться в режиме ввода данных
Что сделать дабы сохранить?
---
Первое и основное. У тебя таблица в режиме ввода данных? Точно?
Ну если да - то попробуй Таб.Записать("C:\MySuperFile.xls",1), то есть в первом параметре полностью прописывай путь и имя к файлу.
---
Первое и основное. У тебя таблица в режиме ввода данных? Точно?
Ну если да - то попробуй Таб.Записать("C:\MySuperFile.xls",1), то есть в первом параметре полностью прописывай путь и имя к файлу.
сами правила:
---
Подозреваю выгружаете данные по второму и более кругу, при этом в ПКО стоит галка "Не замещать существующие объекты в приемнике...", соответсвенно уже загруженные физ лица без стажей изменяться не будут - попробуйте сделать выгрузку с нуля в чистую базу или снять эту галку. (КИ и воинский учет выгружаются абсолютно по другому принципу и сюда никаким боком не относятся)
---
А если добавить справочник "Виды стажа" в правила выгрузки данных, например, это не поможет?
---
Tommy1987, дак есть он там, автоматом сделаны правила, справочники одинаковые в обоих конфах, переносятся все реквезиты все нормально, а табличные части нет
---
Подозреваю выгружаете данные по второму и более кругу, при этом в ПКО стоит галка "Не замещать существующие объекты в приемнике...", соответсвенно уже загруженные физ лица без стажей изменяться не будут - попробуйте сделать выгрузку с нуля в чистую базу или снять эту галку. (КИ и воинский учет выгружаются абсолютно по другому принципу и сюда никаким боком не относятся)
---
alextalov, Да так и есть
Есть сотрудник, работает с 2009 года

Виды начислений всегда стояли Оплата за часы, Месячная премия и районный коэффициент

Если при заполнении табеля сотруднику проставлялись ночные часы, то они всегда "подтягивались" в документ НачислениеЗарплатыСотрудникамОрганизаций

31.01.2012 Кадровым перемещением сотрудника перевели из одного цеха в другой, и добавили ВидНачисления "НочныеЧасы" с 31.01.2012

В НачисленииЗарплатыСотрудникамОрганизаций перестали считаться ночные часы по предыдущему подразделению, в котором работал сотрудник

Подскажите пожалуйста, где поправить
---
Я так понимаю "Ночные часы" вы поставили в кадровое перемещение..может не имеет смысла назначать их т.к если в табеле пройдет то не зависимо от того где он работает в начисление зарплаты пройдет...
---
перестали считаться ночные часы по предыдущему подразделению, в котором работал сотрудник
1. У вас перевод временный или постоянный?
Если сейчас сотрудник работает в подразделении2 то как ему должны считаться ночные часы по предыдущему подразделению?
---
постоянный
2 документа начисления зарплаты же, по 2м подразделениям
до 31 числа НочныеЧасы должны начислиться по 1-му подразделению
31 число НочныеЧасы должны начислиться по 2-му

(3) да
---
Виды начислений всегда стояли Оплата за часы, Месячная премия и районный коэффициент
Если правильно понимаю "Оплата за часы" - часовая тарифная ставка?
---
Я так понимаю "Ночные часы" вы поставили в кадровое перемещение..может не имеет смысла назначать их т.к если в табеле пройдет то не зависимо от того где он работает в начисление зарплаты пройдет...
---
кстати да, попробую убрать
---
Спасибо
---
решилось при помощи этого совета:)
---
Опять же, если правильно понимаю, - часы в табеле вбиваются оператором вручную? Зачем это нужно? в графике работы можно прописать ночные часы и вести учет методом отклонений и неявок - зачем вручную делать то что можно делать в автомате? Имеется ввиду автоматическое заполнение табеля по фактическим данным (внесенные данные по отпускам, больничным, командировкам и т.д.). В этом случае, с учетом того что в программе человек принят на нормальный, правильно заполненный график - табель(заполненный автоматически) будет только отражением уже свершившихся событий.
Есть ли возможность узнать, новый ли документ вводится в базу при его проведении?
---
Обычно в функции "ПередЗаписью" вставляют следующий код

```1c
    ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
```
---
Обычно в функции "ПередЗаписью" вставляют следующий код

```1c
    ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
```
---
Прекрасно, опробую как доеду до работы.
Как посмотреть, какая группа пользователей дает право на что-либо в ЗУПе?

Формировали сзв-6-1 и сзв-6-2. При добавления пользователя в определенную группу пользователь может создать 2 пачки
как только исключаем из группы пользователей- формируется только сзв-6-2, сзв-6-1 не формируется

Подскажите, как увидеть разницу?
---
Посмотреть права в Группе пользователей - настройки пользователя.
---
Посмотреть права в Группе пользователей - настройки пользователя.
---
не то
---
смотрите спр. Подразделения или Группы доступа
---
Скорее всего группе даны определенные роли.
"формируется только сзв-6-2, сзв-6-1 не формируется" - на сколько я помню такое поведение свойственно группе у которой есть только роль "РасчетчикУправленческойЗарплаты", если же к этой роли добавляется еще "КадровикРегламентированныхДанных" то нормально все формируется.
---
врядли роль, т.к. я с полными правами не могу этого сделать

(4) отпишусь
---
ponaroshku 10.02.12 10:06 URL ↓Ответить
Как посмотреть, какая группа пользователей дает право на что-либо в ЗУПе?

Формировали сзв-6-1 и сзв-6-2. При добавления пользователя в определенную группу пользователь может создать 2 пачки
как только исключаем из группы пользователей- формируется только сзв-6-2, сзв-6-1 не формируется

Подскажите, как увидеть разницу?
Дело не в пользователях, а в правах.
---
Насколько я помню в ЗУПе у групп права не настраиваются. Такое реализовано в УТ11.
---
Можно ведь и на пользователей сделать и не заморачиваться группами, в чем проблема то?
---
Сколько пользователей у вас в ЗУПе всего?
---
в конфигруаторе смотрите роли
---
Можно посмотреть у самого отчета кто может его формировать. Как вариант может просто ограниченны права у виндоуз что не позволяет сохранять файлы в пачках
---
Есть роли На этих ролях висит возможность формирования тех или иных объектов в базе. 2 В полне возможно что к группе пользователей привязаны как раз роли (типа УПП - ого механизма "профили", когда через группы пользователей устанавливается возможность доступа на уровне записей, а через профили - доступ по группе ролей)

Поэтому скорее всего надо смотреть какие дополнительные права дает пользователю группа доступности (Обычно на группу можно установить дополнительные права пользователей как в УТ)

К сожалению с ЗУП встречаюсь редко, но по аналогии скорее всего дело в настройках групп - смотрите привязанные к ним роли и дополнительные права.
---
В СЗВ 6-1 -ваши работники, в СЗВ 6-2 уволенные в отчетном периоде.
---
Открываете в конфигураторе элемент справочника, права на который хотите изменить. На вкладке "права" в верхнем окне отображаются роли. Выделяете интересующую вас роль и в нижнем окне меняете права на обработку элемента.
---
*элемент конфигурации.
---
Ребят, ошибка была в том, что группами шло разграничение по организациям

один сотрудник был устроен в обеих организациях по внешнему совместительству

при формировании пачек шел отказ по организации, на которую доступа не было
Ситуация такая - Конфигурация-Источник (писанная УТ10.2)имеет в табличной части документа Реквизит "СерияНомеклатуры", который имеет свои реквизиты "НомерГТД" и "СтранаПроисхождения". В Конфигурации-Приемнике есть в табличной части два реквизита поотдельности "НомерГТД" и "СтранаПроисхождения". Как состыковать?? Где что нужно дописать в конверторе при создании правил конвертации между конфами, чтобы из одного Реквизита-источника сделать два Реквизита-Приемника??? ХЭЛПП!! Ну очень срочно надо!!! =(
---
1. Делаешь ПКС в твоей табличной части с пустым источником.
2. В приемнике указываешь нужный тебе реквизит ТЧ приемника
3. В Обработчике "Перед выгрузкой" пишешь что то наподобии Значение=ОбъектКоллекции.СерияНоменклатуры.НомерГТД
4. Тоже самое для Страны происхождения.

Жирным подчеркнуты обязательные параметры.
Значение - это значение, которое "перейдет" в приемник, т.е. явное указание значения
ОбъектКоллекции - это строка табличной части, в твоем случае
---
2 строчки в ПКС (правила конвертации свойств) нужно создать.
---
Какие???
---
1. Делаешь ПКС в твоей табличной части с пустым источником.
2. В приемнике указываешь нужный тебе реквизит ТЧ приемника
3. В Обработчике "Перед выгрузкой" пишешь что то наподобии Значение=ОбъектКоллекции.СерияНоменклатуры.НомерГТД
4. Тоже самое для Страны происхождения.

Жирным подчеркнуты обязательные параметры.
Значение - это значение, которое "перейдет" в приемник, т.е. явное указание значения
ОбъектКоллекции - это строка табличной части, в твоем случае
---
Да ты гуру! хотел бы поучиться у тебя немного по конвертации! =) мыло скинешь? 0_о
Всем привет.
Интересует возможность программного получения имен предопределенных значений справочника. Например, добавляю в справочник новое предопределенное значение с именем "НовоеЗначение" и наименованием "Новое значение по умолчанию". Задача в том, как получить имя этого значения, т.е. "НовоеЗначение". Пробовал выбирать запросом элементы споавочника с условием "Предопределенный = Истина" - выводится только наименование... Через метаданные тоже не нашел.
Возможно ли это реализовать?
---
```1c
    СпрНоменклатура = Справочники.Номенклатура;
    Имя = СпрНоменклатура.ПолучитьИмяПредопределенного(СпрНоменклатура.НовоеЗначение);
```
---
```1c
    СпрНоменклатура = Справочники.Номенклатура;
    Имя = СпрНоменклатура.ПолучитьИмяПредопределенного(СпрНоменклатура.НовоеЗначение);
```
---
Спасибо, Андрей! То, что нужно. Держи пять :)
(3) Спасибо, так же уже и реализовал.

ответ я получил, вопрос закрываю.
---
Запрос = Новый Запрос;
  Запрос.Текст =
  "ВЫБРАТЬ
  | Качество.Ссылка
  |ИЗ
  | Справочник.Качество КАК Качество
  |ГДЕ
  | Качество.Предопределенный = ИСТИНА";

  Выборка = Запрос.Выполнить().Выбрать();
  Пока Выборка.Следующий() Цикл

   ИмяЭлемента = Справочники.Качество.ПолучитьИмяПредопределенного(Выборка.Ссылка);
   Сообщить(ИмяЭлемента);

  КонецЦикла;
Кадровик принимает на работу одного сотрудника, используя помощник
Сотрудник ранее работал в организации (новое физ лицо не создаем, создаем Нового сотрудника)

установленная дата запрета изменения данных - 31.12.2010 (!):)

сотрудник принимается 27.01.2012

При нажатии "Готово" вылазит ошибка "Редактирование данных периода запрещено"

При нажатии в помощнике на "Стандартные налоговые вычеты, справка с предыдущего места работы, статус налогоплательщика" вылетает про редактирование НДФЛ

С полными правами я могу открыть "Стандартные налоговые вычеты, справка с предыдущего места работы, статус налогоплательщика" и принять сотрудника

Какого права ей не хватает и почему именно с этим сотрудником проблема?
---
А пробовали отключить дату запрета редактирования, чтобы проверить влияет ли она как-нибудь? Я просто перечисляю самые простые способы прежде чем углубиться в серьезную аналитику?
---
Для того чтобы ответить на вопрос какого права не хватает, нужно знать какие права уже есть.
---
(3)КадровикРегламентированныхДанных и Пользователь, других прав у нее нет

какая-то фишка с ранее уволенным сотрудником, так наш кадровик свободно принимает всех на работу
---
Право КадровикРегламентированныхДанных стоит?
---
А пробовали отключить дату запрета редактирования, чтобы проверить влияет ли она как-нибудь? Я просто перечисляю самые простые способы прежде чем углубиться в серьезную аналитику?
---
нельзя:(

кадровик не может открывать Стандартные налоговые вычеты, справка с предыдущего места работы, статус налогоплательщика

ошибка "Редактирование данных по НДФЛ запрещено"

я думаю может фишка в том, что у сотрудника в справочнике физ лица в закладке НДФЛ проставлено "Не применять" с 01.04.11

хотя под запрет-то не попадает
---
вообщем сделала как 5, устроили тетеньку, и я снова вернула закрытый период
---
По поводу ошибки с НДФЛ. Редактировать эти данные может только человек с правами "РасчетчикРегламентированнойЗарплаты"
---
да я поняла,что фишка не в этом, это на расчет влияет

что-то у меня даже идей нету:(
---
ponaroshku,
Не пробовали под полными правами принять этого работника, а потом посмотреть в журнале регистрации,
в какие регистры и что записывалось?...

Понятно, что это из-за того, что физлицо старое и поэтому что-то пишется в регистры в том закрытом периоде, когда он раньше работал.
Если добавить новое физлицо, то все нормально будет :-)
---
новое физ лицо заводить не есть правильно

ошибка не удалось записать стандартные вычеты физ лиц по ндфл

сейчас попробуем
---
Ее вообще в 2006 году брали первый раз
в марте 11 уволили
сейчас снова берут
---
ОбщийМодуль.НастройкаПравДоступа.ПроверкаПериодаЗаписейРегистров()
Поставьте точку остановки в отладке в этой функции и определите по какому регистру переменная отказ переходит из значения ложь в истину
---
я не смогу так сделать, к нужному пользователю не подключусь
---
получается косяк 1с-ки, что при приеме пишется инфа в закрытый период?
Конфигурация УПП.
Создали новую базу, заполнили - организацию (1.01.2011), номенклатуру, учетные политики (1.01.2011).
Делаем ввод остатков номенклатуры через документ - Оприходование товаров и услуг.
Если документ 31.12.2011 - то в регистре Партии товаров на складах - нет организации.
Если документ 1.01.2012 - то в регистре Партии товаров на складах - есть организация.

Подскажите, что не учтено?
Зараннее, спасибо.
---
Точно, рс.ведение управленческого партионного учета, тут собака порылась. Спасибо.
---
регистры отвечающие за учетные политики посмотри

upd: не внимательно прочитал

upd2: в Константах настройки параметров учета посмотри "Режим учета затрат" -> "Детализация учета" (или сам регистр Настройка способа ведения управленческого партионнго учет");
---
Точно, рс.ведение управленческого партионного учета, тут собака порылась. Спасибо.
Здравствуйте.
Столкнулся с проблемой при проведении большого количества документов (неважно каких), при котором выдаются предупреждения в отдельном окошке (не через метод Сообщить). Предупреждения типовые, соответственно, отключить их, не исправляя конфигурацию, нельзя. Проблема заключается в том, что текст предупреждения постепенно разрастается, и каждый последующий документ проводится медленнее предыдущего. Начинает ощущаться, когда сообщений больще нескольких сотен.
Подскажите, есть ли способ в обработке, через которую я инициирую проведение документов, перед каждым проведением очищать предупреждения?
С уважением.
P.S.: существует "хитрый" способ (останавливать выполнение обработки, закрывать вручную, а потом заново запускать, но уже с учетом проведенных документов) - но этот способ, во-первых, корявый, во-вторых, не для всех случаев его можно использовать - из-за этого за помощью и обратился.
---
Спасибо за ответы - проблема решена.
Нужно константу установить в ложь (не знаю как она в конфигурации называется)
Константы -> Настройка Программы -> Вывод сообщений -> "Разрешить выводить сообщения в панель комментариев".
После этого предупреждения выводятся не как методом "Предупреждение()", а как методом "Сообщить()".
Таким образом, даже при больших количествах выводимых предупреждений скорость, проведения не падает.
Проверил - помогает.
---
Cujo пишет:
Подскажите, есть ли способ в обработке, через которую я инициирую проведение документов, перед каждым проведением очищать предупреждения?

А как мы можем догадаться что за обработку ты используешь?
Ну и заодно телепатируй что за конфигурация и платформа.
---
Meson, дело не в обработке - она просто Документ.Записать(РежимПроведенияДокумента.Проведение) вызывает для перечня документов. Делаю в УПП 1.2 (1.2.34.1), платформа 8.2 (8.2.14.540).
Провожу документ - в процедуре "ОбработкаПроведения" проверяются какие-то условия и выдаются Предупреждения.
Они накапливаются, и с каждым разом все сильнее тормозят проведение документа.
---
может подписка на события?
---
Может быть вынести код во внешнюю обработку, и ее уже поправить? И конфигу править не придется. Или, как вариант, попробовать очищать глобальную переменную в другом окне (не факт что получиться).
---
Спасибо за ответы - проблема решена.
Нужно константу установить в ложь (не знаю как она в конфигурации называется)
Константы -> Настройка Программы -> Вывод сообщений -> "Разрешить выводить сообщения в панель комментариев".
После этого предупреждения выводятся не как методом "Предупреждение()", а как методом "Сообщить()".
Таким образом, даже при больших количествах выводимых предупреждений скорость, проведения не падает.
Проверил - помогает.
Сообщение было скрыто модератором.
---
Текст = СоздатьОбъект("Текст");
Текст.Записать("c:\txt.txt") ;
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Реанимировать мертвые посты никому не нужными простынями для пополнения виртуального кошелька - это конечно круто!
---
Текст = СоздатьОбъект("Текст");
Текст.Записать("c:\txt.txt") ;
---
Текст = СоздатьОбъект("Текст");
Текст.Записать("c:\txt.txt") ;
---
yulie,
вот накой это писать,а?
---
Можно еще проверить, на существование этого файла
Попытка
    Текст.Открыть("c:\txt.txt") ;
Исключение
    Текст.Записать("c:\txt.txt") ;
КонецПопытки;
---
А можно ли создать файл в 1С
Если ФС.СуществуетФайл("c:\txt.txt") = 0 Тогда
     Как создать файл???
КонецЕсли;
---
Текст = СоздатьОбъект("Текст");
Текст.Записать("c:\txt.txt") ;
---
спасибо!
Есть документ и в табличной части этого документа документа есть справочник, в табличной части которого находятся ссылки на элементы. С помощью запроса я выбираю различные ссылки этого документа и теперь нужно создать для каждой ссылки свои колонки в табличном поле документа для каждой из ссылок справочнгика и записывать в них соответствующие ссылки. Вопрос: как создать заданное число колонок в табличном поле?
---
Можно поставить динамический список с произвольным запросом, куда выбрать эту табличную часть. Работать правда с ней нельзя будет)
---
Смотри, ты сейчас пытаешься программно создать колонки в таб.части документа, допустим ты их создашь, дальше что ты сними делать будешь? куда сохранять данные ? у тебя что количество колонок динамическая величина ?
---
Действительно, вопрос в том, что ты потом собираешься делать с этими колонками. Ты их хочешь просто отобразить?
То есть, если я правильно понимаю, есть документ, есть табличная часть, в ней есть реквизит "Реквизит1", тип СправочникСсылка. У справочника, который отвечает за реквизит, есть табличная часть. Вы хотите для каждого элемента табличной части справочника создавать колонку в табличной части документа.

Если все верно, то алгоритм примерно такой (для толстого клиента, в тонком будут свои тонкости)
1) Узнаем, сколько максимум может быть колонок
2) Создаем заданное число колонок
3) Либо ловим событие при выводе строки и в нем заполняем колонки, либо полностью заполняем табличное поле своим запросом. В первом случае будут жуткие тормоза при наличии большого числа строк в документе.
---
Динамический список и управляемые формы спасут
---
Интересно, как? Таб часть - это не динамический список)
---
Можно поставить динамический список с произвольным запросом, куда выбрать эту табличную часть. Работать правда с ней нельзя будет)
---
выбрать в динамическом списке произвольно эту табличную часть - связать как надо с табличными частями справочников - вывести как надо - определить обработчики для редактирования - все возможно - надо только определиться что все же нужно и в каком виде.

Если количество колонок заранее неизвестно - можно компоновку данных использовать и выгружать результат в табличное поле
Всем привет! Проблема в следующем. Есть форма документа. В модулей этой формы я пишу код:

Процедура НаименованиеПроцедуры()
...
    Если НаименованиеФункции() = 1 тогда
       ...
       ...
    КонецЕсли;
...
КонецПроцедуры

Функция НаименованиеФункции()
...
...
...
КонецФункции

Суть проблемы. При открытии этой формы, выдается ошибка: Не найдена функция НаименованиеФункции().
В 1С 7.7 я никогда раньше не программировал, в основном только в 1С 8.2 Здесь все немножко подругому) я так
понимаю мне необходимо где то указать программе, что в этом модуле используются такие-то такие-то функции. Или как вообще решить данную проблему? Эта функция располагается в том же модуле, что и процедура.
---
Для 7.7 важен порядок написания. Т.е. все что вызывается должно быть выше по тексту

Поэтому вариант1

Функция НаименованиеФункции()
...
...
...
КонецФункции

Процедура НаименованиеПроцедуры()
...
Если НаименованиеФункции() = 1 тогда
...
...
КонецЕсли;
...
КонецПроцедуры

Или Вариант2

Функция НаименованиеФункции() Далее

Процедура НаименованиеПроцедуры()
...
Если НаименованиеФункции() = 1 тогда
...
...
КонецЕсли;
...
КонецПроцедуры

Функция НаименованиеФункции()
...
...
...
КонецФункции
---
На закладке Действия->Процедуры и функции модуля, такая функция есть.
---
Для 7.7 важен порядок написания. Т.е. все что вызывается должно быть выше по тексту

Поэтому вариант1

Функция НаименованиеФункции()
...
...
...
КонецФункции

Процедура НаименованиеПроцедуры()
...
Если НаименованиеФункции() = 1 тогда
...
...
КонецЕсли;
...
КонецПроцедуры

Или Вариант2

Функция НаименованиеФункции() Далее

Процедура НаименованиеПроцедуры()
...
Если НаименованиеФункции() = 1 тогда
...
...
КонецЕсли;
...
КонецПроцедуры

Функция НаименованиеФункции()
...
...
...
КонецФункции
---
Во блин)) спасибо за подсказку) В жизни бы не догадаться, если не знаешь) большое спасибо)